结构体类型不仅可以关联方法,而且可以有内置元素(又称字段)。结构体类型的声
明一般以关键字type开始,并依次包含类型名称、关键字struct以及由花括号包裹的字
//用于表示针对中文的演示级聊天机器人
type simplecN struct{
name string
talk Talk
}
结构体类型中的每个字段声明都需独占一行。一般情况下,字段声明需由字段名称
和表示字段类型的字面量组成。
还有一种只有类型字面量的无名称字段,称为嵌入字段。虽然嵌入字段可以用来无
缝集成额外字段和方法,但是其嵌入规则和使用规则都比较复杂。为了保持清晰和简单,
通常不建议使用嵌入字段,因此这里不作说明。
结构体类型的值一般由复合字面量来表达。复合字面量可以由类型字面量和由花括
号包裹的键值对列表组成。这里,键就是结构体类型中某个字段的名称,而值(或称元
素)就是要赋给该字段的那个值。表示结构体值的复合字面量可以简称为结构体字面量。
在同一个结构体字面量中,一个字段名称只能出现一次。例如,这样是不合法的:
simpleCN{name:"simple.cn",name:"simple.en"}
我们还可以在编写结构体字面量时忽略字段的名称,不过这样做有两个限制。
要么忽略掉所有字段的名称,要么都不忽略。
多个字段值的顺序应该与结构体类型中字段声明的顺序一致,并且不能够省略对
任何一字段的赋值。例如:simplecN{"simple.cn",ni1)是合法的,而simplecNM{nil,
“simple.cn"}和simplecN{"simple.cn"}就不合法。这种限制对于不忽略字段名称的写
法来说是不存在的。在不忽略字段名称的写法中,未被明确赋值的字段会自动被
其类型的零值填充。
与数组类型相同,结构体类型属于值类型,因此结构体类型的零值不是nil。例如,
simplecN的零值就是simplecN{}。
閱讀更多 80後老程序員 的文章