Golang空结构体struct{}用途,你知道吗
golang空结构体struct{}可以用来节省内存
a:=struct{}{} println(unsafe.Sizeof(a)) //Output:0
理由如下:
- 如果使用的是map,而且map又很长,通常会节省不少资源
- 空struct{}也在向别人表明,这里并不需要一个值
本例说明在map里节省资源的用途:
set:=make(map[string]struct{}) for_,value:=range[]string{"apple","orange","apple"}{ set[value]=struct{}{} } fmt.Println(set) //Output:map[orange:{}apple:{}]
下例,演示了struct{}可以向人展示对象中不需要任何数据,仅包含需要方法。在调用也并无任何区别
typeLampstruct{} func(lLamp)On(){ println("On") } func(lLamp)Off(){ println("Off") } funcmain(){ //Case#1. varlampLamp lamp.On() lamp.Off() //Output: //on //off //Case#2. Lamp{}.On() Lamp{}.Off() //Output: //on //off }
还有其他情况,比如有时候使用channel,但并不需要附带任何数据。
funcworker(chchanstruct{}){ //Receiveamessagefromthemainprogram. <-ch println("roger") //Sendamessagetothemainprogram. close(ch) } funcmain(){ ch:=make(chanstruct{}) goworker(ch) //Sendamessagetoaworker. ch<-struct{}{} //Receiveamessagefromtheworker. <-ch println(“roger") //Output: //roger //roger }
到此这篇关于Golang空结构体struct{}用途,你知道吗的文章就介绍到这了,更多相关Golang空结构体struct{}内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!