golang 中的切片地址
資深大佬 : Chaox 0
func main() { months := []string{1: "January"} fmt.Printf("%p,n",&months) //0xc0000ae040, fmt.Printf("%p,n",months) //0xc0000ae060, fmt.Printf("%p,n",&months[0]) //0xc0000ae060, }
我知道第二个和第三个打印函数指向的是底层数组的第一个元素的地址。 但是我想问的是第一个打印函数中打印的地址指向的是什么? 对切片这个引用类型(本身传递的就是地址)取地址会取到什么呢?
(我在 stackoverflow 上看到回答是指向 slice 的 header 。我的疑惑是这个 header 如果表示的是 slice 结构体,但是 slice 结构体的第一个成员变量就是数组的指针,那么结构体的地址不就是第一个成员变量的地址吗,不就是底层数组的第一个元素吗?)
大佬有話說 (7)