读书笔记之Go指针

本文详细介绍了Go语言中指针的概念,包括指针的值是内存地址,如何通过指针进行变量的交换,以及如何使用指针进行函数参数传递。通过示例代码展示了`swap1`和`swap2`两个函数,前者在函数内部改变了副本的值,后者直接通过指针修改了原变量。此外,还讲解了如何通过`new()`创建指针并给其指向的变量赋值。
摘要由CSDN通过智能技术生成

每个变量都在内存中有地址,指针的值就是地址!

指针(%p

ptr := &x
x := *ptr

在这里插入图片描述

指针的类型

上图 xint 类型,则对应的指针 ptr*int 类型。(诸如此类)

理解指针的用途

对指针的操作就是对原数据的操作

注:函数的压栈都是将形参的值拷贝进自己的函数空间!!!

func swap1(a, b int) { /拷贝进来的是变量值
	a,b = b,a
}

func swap2(a, b *int) { /拷贝进来的是变量地址
	*a,*b = *b,*a
}

func main(){
	x := 11
	y := 22
	swap1(x,y) /没有影响原变量
	fmt.Printf("x=%d  y=%d",x,y) //x=11  y=22
	swap2(&x,&y) /影响了原变量
	fmt.Printf("x=%d  y=%d",x,y) //x=22  y=11
}

函数返回派生(自定义)数据类型的指针

func NewUser(name string) *User { //*User是指针类型啊
	return &User{name: name}
}

new()凭空创建指针

str := new(string)

此时 str 就是一个*string类型的指针,并且会分配内存,并有默认值!

*str = "给指针指向的变量赋值"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值