只需運(yùn)行打印 16。更改字符串的內(nèi)容不會(huì)影響結(jié)果。fmt.Println(unsafe.Sizeof(""))有人可以解釋這個(gè)數(shù)字(16)是如何來的嗎?
1 回答

元芳怎么了
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
Go 中的字符串由反射表示。StringHeader
包含指向?qū)嶋H字符串?dāng)?shù)據(jù)的指針和字符串長度:
type StringHeader struct { Data uintptr Len int }
unsafe.Sizeof(s)
將僅返回結(jié)構(gòu)的大小,而不返回指向數(shù)據(jù)本身。因此(在您的示例中),它將是8個(gè)字節(jié)的總和,使其成為16個(gè)字節(jié)的8個(gè)字節(jié)。StringHeader
Data
Len
- 1 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報(bào)
0/150
提交
取消