Go 中的可寻址和不可寻址怎样理解?
发布时间:2021-11-03 04:22:59  所属栏目:语言  来源:互联网 
            导读:可直接使用 操作符取地址的对象,就是可寻址的(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 
	} (编辑:海洋资讯信息网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
站长推荐
            
        
