1. 结构体的定义格式
在go语言中结果的定义格式如下:
1 | type structName struct { |
列子如下:
1 | type Person struct { |
对上上述这种方式定义的结构体有如下几种初始化的方式
默认的方式, 这种方式也是零值初始化方式
1
p := Person{}
使用字面量进行初始化
1
2p := Person{"Joe", 19} // 注意此时必须按照顺序初始化
pp := Person{age: 19, Name: "Joe"} // 指定fieldname方式赋值,不用按照顺序
2. 匿名结构体的使用
对于匿名结构体,可以在初始化变量的时定义,如下:
1 | func main() { |
同样在定义结构体时,也可以使用匿名结构体, 如下:
1 | type User struct { |
对于在结构体中的匿名结构体,在初始化的时候,需要如下操作:
1 | func main(){ |
注意:在GO中结构体,就是某些字段的集合,是值类型的,可以进行 ==
比较的,注意必须是相同类型的结构体。
3. 结构体中的匿名字段
结构体中的匿名字段,可以是GO语言内置的,也可以是自定义的类型。GO内置的类型,例子如下:
1 | type Person struct{ |
对于这种结构体,必须按照顺序进行初始化。
1 | func main() { |
在go中没有继承机制,自定义类型的匿名字段在go中叫做组合继承,如下
1 | type human struct{ |
对于这种结构体的初始化,按照顺序初始化,如下
1 | func main() { |
指定字段名进行初始化
1 | func main() { |
对于结构体指着的使用,就不在啰嗦了。