2015-04-07 92 views
2

在Go中,我很困惑爲什麼像int這樣的變量的內存地址可以被獲取,但不能用於結構體。舉個例子:結構內存地址不可見

package main 

import "fmt" 

func main() { 
stud1 := stud{"name1", "school1"} 
a:=10 
fmt.Println("&a is:", &a) 
fmt.Println("&stud1 is:",&stud1) 
} 

輸出爲:

&a is: 0x20818a220 
&stud1 is: &{name1 school1} 

爲什麼&賜的內存地址,但& stud1沒有給予確切的內存位置。我沒有任何使用內存地址的意圖,但只是對不同的行爲感到好奇。

回答

5

fmt程序包使用反射來打印出值,並且有一個特定的情況可以將結構的指針打印爲&{Field Value}

如果要查看內存地址,請使用指針格式化動詞%p

fmt.Printf("&stud is: %p\n", &stud)