struct{} //长篇更新

结构体类型

和其它类型相似,结构体也有一个原生类型(习惯这种称法)
比如,接口类型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")
    }
}
原文地址:https://www.cnblogs.com/tinaluo/p/14528591.html