Go中&与*的区别以及使用

&:符号的意思是对变量取地址。
*: 是指针运算符 , 可以表示一个变量是指针类型 , 也可以表示一个指针变量所指向的存储单元 ,也就是这个地址所存储的值 。

例子:

func main() {
    var a *int // 存储的是int的指针,目前为空
    var b int = 4 // 存储的是int的值
    a = &b // a 指向 b 的地址
    a = b // a 无法等于 b,会报错,a是指针,b是值,存储的类型不同
    fmt.Println(a) // a:0xc00000a090(返回了地址)
    fmt.Println(*a) // *a:4(返回了值)
    fmt.Println(*&a) // *抵消了&,返回了0xc00000a090本身
    *a = 5 // 改变 a 的地址的值
    fmt.Println(b) // b:5,改变后 b 同样受到改变,因为 a 的地址是指向 b 的
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容