1 回答

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
當(dāng)您使用 打印值時(shí)fmt.Println()
,將使用默認(rèn)格式。引用包文檔fmt
:
%v 的默認(rèn)格式是:
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
對(duì)于復(fù)合對(duì)象,使用這些規(guī)則遞歸打印元素,布局如下:
struct:? ? ? ? ? ? ?{field0 field1 ...}
array, slice:? ? ? ?[elem0 elem1 ...]
maps:? ? ? ? ? ? ? ?map[key1:value1 key2:value2 ...]
pointer to above:? ?&{}, &[], &map[]
結(jié)構(gòu)值的地址是最后一行,因此它被特殊對(duì)待并因此使用&{}語(yǔ)法打印。
如果你想打印它的地址,不要使用默認(rèn)格式,而是使用格式字符串并用動(dòng)詞明確指定你想要的地址(指針)%p:
fmt.Printf("%p\n", &r)
這將輸出(在Go Playground上嘗試):
0x414020
- 1 回答
- 0 關(guān)注
- 135 瀏覽
添加回答
舉報(bào)