站长网 语言 Go 中的可寻址和不可寻址怎样理解?

Go 中的可寻址和不可寻址怎样理解?

可直接使用 操作符取地址的对象,就是可寻址的(Addressable)。比如下面这个例子func main() { name := iswbm fmt.Println(name) // output: 0xc000010200}程序运行不会报错,说明 name 这个变量是可寻址的。但不能说 iswbm 这个字符串是可寻址的。iswbm 是

可直接使用 & 操作符取地址的对象,就是可寻址的(Addressable)。比如下面这个例子

 

func main() { 

    name := "iswbm" 

    fmt.Println(&name)  

    // output: 0xc000010200 

程序运行不会报错,说明 name 这个变量是可寻址的。

 

但不能说 "iswbm" 这个字符串是可寻址的。

 

"iswbm" 是字符串,字符串都是不可变的,是不可寻址的,后面会介绍到。

 

在开始逐个介绍之前,先说一下结论

 

指针可以寻址:&Profile{}

变量可以寻址:name := Profile{}

字面量通通不能寻址:Profile{}

# 2. 哪些是可以寻址的?

变量:&x

 

func main() { 

    name := "iswbm" 

    fmt.Println(&name)  

    // output: 0xc000010200 

指针:&*x

 

type Profile struct { 

    Name string 

 

func main() { 

    fmt.Println(unsafe.Pointer(&Profile{Name: "iswbm"})) 

    // output: 0xc000108040 

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/biancheng/yuyan/2021/1102/18386.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部