struct
struct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一。
说白了就是拿来存储数据的,只不过可自定义化的程度很高,用法很灵活,Go中不少功能依赖于结构,就这样一个角色。
Go中不支持面向对象,面向对象中描述事物的类的重担由struct来挑。比如面向对象中的继承,可以使用组合(composite)来实现:struct中嵌套一个(或多个)类型。面向对象中父类与子类、类与对象的关系是is a
的关系,例如Horse is a Animal
,Go中的组合则是外部struct与内部struct的关系、struct实例与struct的关系,它们是has a
的关系。Go中通过struct的composite,可以"模仿"很多面向对象中的行为,它们很"像"。
定义struct
定义struct的格式如下:
1type identifier struct {
2 field1 type1
3 field2 type2
4 …
5}// 或者type T struct { a, b int }
理论上,每个字段都是有具有唯一性的名字的,但如果确定某个字段不会被使用,可以将其名称定义为空标识符_
来丢弃掉:
1type T struct {
2 _ string
3 a int}
每个字段都有类型,可以是任意类型,包括内置简单数据类型、其它自定义的struct类型、当前struct类型本身、接口、函数、channel等等。