匿名結(jié)構(gòu)體
適用于臨時數(shù)據(jù)存儲
空結(jié)構(gòu)體
不占用內(nèi)存空間,不同的空結(jié)構(gòu)體對象內(nèi)存地址相同估灿,
varvstruct{}
fmt.Println(unsafe.Sizeof(v))//0
v1?:=struct{}{}
fmt.Println(unsafe.Sizeof(v1))/
Ageint
}
fmt.Println(v)
使用場景:
利用 Map 來實現(xiàn) Set,key存儲需要的數(shù)據(jù)缤剧,value是個空結(jié)構(gòu)體馅袁。
channel傳遞信號。
實現(xiàn)方法接收者
在業(yè)務(wù)場景下荒辕,我們需要將方法組合起來汗销,代表其是一個 ”分組“ 的,便于后續(xù)拓展和維護(hù)抵窒。
但是如果我們使用:
typeTstring
func(s?*T)Call()
又似乎有點(diǎn)不大友好大溜,因為作為一個字符串類型,其本身會占據(jù)定的空間估脆。
這種時候我們會采用空結(jié)構(gòu)體的方式钦奋,這樣也便于未來針對該類型進(jìn)行公共字段等的增加。如下:
typeTstruct{}
func(s?*T)Call()?{
fmt.Println("腦子進(jìn)煎魚了")
}
funcmain(){
vars?T
?s.Call()
}
在該場景下疙赠,使用空結(jié)構(gòu)體從多維度來考量是最合適的付材,易拓展,省空間圃阳,最結(jié)構(gòu)化厌衔。