golang 中的go指针

go语言是支持指针的,假设有一个int型变量x,&x表示取x的地址,将此值赋给p,那么p就是指针。去的指向的值,使用*p

 var  int x 

p := &x

fm.Println(*P)

*p = 1

fmt.Println(x)

本书默认初始值的叫法,zero value。

我们可以使用指针来代替变量名,如果指针改变了变量值,会影响到变量名,因为本质上他们是同一个内存空间

上面的例子是基本类型,其实符合类型也是变量,他们也有一个地址,也是可以通过指针操作的,复合类型内的具体元素同样有地址,并且可以通过指针进行操作。

对于上礼中的p,我们称之为指针类型,指针类型的默认初始值为nil,可以通过p==nil来判断是否取得地址,nil就是未取得。

上述代码中,有两个函数,selfPlusPointer 和 selfPlus

接收的是一个int类型的参数,直接执行了自增运算,自增go语言中不是一个表达式。selfPlus函数接收到一个整形参数,这是用一个临时变量存储自增的结果。然后在返回临时变量的指针类型

 定义变量m,要注意&m 参数的使用,它代表m的地址给selfPlusPointer 函数,接着打印m。

因为selfPlus返回的是指针类型,所以打印的时候*前缀,否则打印的是地址

go语言中,除非显示的使用指针,否则所有的值传递都是具体值的复制,包括数组等复合数据,

 前面介绍指针的时候用的都是有变量名的变量,那么可不可以直接使用指针指向一个没有变量名的变量呢

go语言提供了new函数来帮助我们创建一个不需要名称的变量,可以直接赋给一个指针,其用法非常简单

p  := new(int)  p为*int类型 

fmt.Println(*p) value为0

对于指针的介绍,go的指针比c++的安全多

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值