我是新來的我想在 go 中打印結構變量的地址這是我的程序type Rect struct { width int name int }func main() { r := Rect{4,6} p := &r p.width = 15fmt.Println("-----",&p,r,p,&r)}這個的輸出 _____0x40c130 {15 6} &{15 6} &{15 6}但我想打印 r 變量的地址,因為我知道 '&' 代表地址,'*' 指向指針位置的值,但在這里我無法打印 r 的地址,我使用的是在線編輯器 go-朗https://play.golang.org/我也想將這個地址存儲在某個變量中。
1 回答

慕工程0101907
TA貢獻1887條經驗 獲得超5個贊
當您使用 打印值時fmt.Println()
,將使用默認格式。引用包文檔fmt
:
%v 的默認格式是:
bool:? ? ? ? ? ? ? ? ? ? %t
int, int8 etc.:? ? ? ? ? %d
uint, uint8 etc.:? ? ? ? %d, %#x if printed with %#v
float32, complex64, etc: %g
string:? ? ? ? ? ? ? ? ? %s
chan:? ? ? ? ? ? ? ? ? ? %p
pointer:? ? ? ? ? ? ? ? ?%p
對于復合對象,使用這些規則遞歸打印元素,布局如下:
struct:? ? ? ? ? ? ?{field0 field1 ...}
array, slice:? ? ? ?[elem0 elem1 ...]
maps:? ? ? ? ? ? ? ?map[key1:value1 key2:value2 ...]
pointer to above:? ?&{}, &[], &map[]
結構值的地址是最后一行,因此它被特殊對待并因此使用&{}語法打印。
如果你想打印它的地址,不要使用默認格式,而是使用格式字符串并用動詞明確指定你想要的地址(指針)%p:
fmt.Printf("%p\n", &r)
這將輸出(在Go Playground上嘗試):
0x414020
- 1 回答
- 0 關注
- 139 瀏覽
添加回答
舉報
0/150
提交
取消