3 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
內(nèi)存使用情況。例如,類(lèi)型struct{}, interface{}, 和bool,
package main
import (
"fmt"
"unsafe"
)
func main() {
var s struct{}
fmt.Println(unsafe.Sizeof(s))
var i interface{}
fmt.Println(unsafe.Sizeof(i))
var b bool
fmt.Println(unsafe.Sizeof(b))
}
輸出(32 位架構(gòu)的字節(jié)):
0
8
1
輸出(64 位架構(gòu)的字節(jié)):
0
16
1

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
空結(jié)構(gòu)體和空接口雖然在語(yǔ)法上相似,但實(shí)際上是對(duì)立的。空結(jié)構(gòu)不包含任何數(shù)據(jù);空接口可以保存任何類(lèi)型的值。如果我看到 a map[MyType]struct{}
,我立即知道不會(huì)存儲(chǔ)任何值,只會(huì)存儲(chǔ)鍵。如果我看到 a map[MyType]interface{}
,我的第一印象將是它是一個(gè)異質(zhì)的值集合。即使我看到代碼在其中存儲(chǔ)了 nil,我也不確定是否有其他代碼段沒(méi)有在其中存儲(chǔ)其他內(nèi)容。
換句話(huà)說(shuō), usingstruct{}
使您的代碼更具可讀性。它還可以節(jié)省一點(diǎn)內(nèi)存,如另一個(gè)答案中所述,但這只是使用正確工具進(jìn)行工作的附帶好處。
- 3 回答
- 0 關(guān)注
- 193 瀏覽
添加回答
舉報(bào)