对于go的reference type,有没有能够说清楚的

zackzhangkai · · 836 次点击
<a href="/user/colinrs" title="@colinrs">@colinrs</a> 我想表达的意思就是,切片是“类型引用”的,也即,“如果把它赋值给一个新的变量,这个新的变量跟原来的变量是共享一个地址空间的”。但是通过上面打印,发现这两个变量的地址空间并不是一样的。 但是通过@focuseonline的回答,我理解了,其实这两个变量存的是两个指针,两个这打印出来的是这两个指针的地址。其实这两个指针指向的是同一个切片的地址。
#4
更多评论
这个很简单吧, 你就理解这个a b都是指针, 指针本身也有变量和地址啊. 他们自身的地址肯定不一样的,不然不就成了同一个指针了?
#1
a := [3]int{1, 2, 3} fmt.Printf(&#34;a addr: %p\n&#34;, &amp;a) //a addr: 0xc00011a000 b := a fmt.Printf(&#34;b addr: %p\n&#34;, &amp;b) //b addr: 0xc00011a020 b[1] = 10 fmt.Println(a) //[1 2 3] 试试这个
#2