匿名结构体
适用于临时数据存储
空结构体
不占用内存空间,不同的空结构体对象内存地址相同,
varvstruct{}
fmt.Println(unsafe.Sizeof(v))//0
v1 :=struct{}{}
fmt.Println(unsafe.Sizeof(v1))/
Ageint
}
fmt.Println(v)
使用场景:
利用 Map 来实现 Set,key存储需要的数据,value是个空结构体。
channel传递信号。
实现方法接收者
在业务场景下,我们需要将方法组合起来,代表其是一个 ”分组“ 的,便于后续拓展和维护。
但是如果我们使用:
typeTstring
func(s *T)Call()
又似乎有点不大友好,因为作为一个字符串类型,其本身会占据定的空间。
这种时候我们会采用空结构体的方式,这样也便于未来针对该类型进行公共字段等的增加。如下:
typeTstruct{}
func(s *T)Call() {
fmt.Println("脑子进煎鱼了")
}
funcmain(){
vars T
s.Call()
}
在该场景下,使用空结构体从多维度来考量是最合适的,易拓展,省空间,最结构化。
网友评论