struct是Go中的关键字。它用于定义结构类型,结构类型是命名元素的序列。
例如:
type Person struct { Name string Age int}的
struct{}是一个struct具有零个元素类型。通常在不存储任何信息时使用。它具有大小为0的优点,因此通常不需要内存来存储type值
struct{}。struct{}{}另一方面是复合文字,它构造一个类型的值struct{}。复合文字构造用于类型的值,例如结构,数组,映射和切片。它的语法是大括号后跟元素的类型。由于“空”结构(struct{})没有字段,因此元素列表也为空: struct{} {}| ^ | ^ type empty element list作为示例,让我们在Go中创建一个“集合”。Go没有内置的集合数据结构,但是它具有内置的映射。我们可以将地图用作集合,因为一张地图最多只能有一个具有给定键的条目。并且由于我们只想将键(元素)存储在地图中,因此我们可以将地图值类型选择为
struct{}。包含
string元素的地图:
var set map[string]struct{}// Initialize the setset = make(map[string]struct{})// Add some values to the set:set["red"] = struct{}{}set["blue"] = struct{}{}// Check if a value is in the map:_, ok := set["red"]fmt.Println("Is red in the map?", ok)_, ok = set["green"]fmt.Println("Is green in the map?", ok)输出(在Go Playground上尝试):
Is red in the map? trueIs green in the map? false
请注意,但是,
bool在从地图创建集合时,将其用作值类型可能更方便,因为检查元素是否在其中的语法更简单。



