结构体类型
和其它类型相似,结构体也有一个原生类型(习惯这种称法)
比如,接口类型interface{},字符切片类型[]byte,原生的struct类型为struct{}
定义类型
在实际运用中,一般使用type来定义,比如:
type Person struct{ age int }
除此外还有一种类型,声明的同时进行定义,形式如下:
var person=struct{ age int }{ 20, }
struct{}{}
如果结构体没有任何成员,就是一个空结构体,于是可以写成:
var person=struct{}{},这种形式根据上面的例子进行推导,理解会加深一些
因此,对于原生的struct{}来说,可以有下面的样式:
client:=make(map[string]struct{})
client["dev1"]=struct{}{}
这种写法按照一般说法就是不占内存,只起一个索引作用,判断key是否存在,完整代码如下:
/* struct{}{}的运用,只起索引作用 */ func main() { client := make(map[string]struct{}) client["dev1"] = struct{}{} if _, ok := client["dev1"]; ok { fmt.Println("dev1 exist") } }