Go 语言可以通过自定义的方式形成新的类型,结构体就是这些类型中的一种复合类型,结构体是由零个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。
定义
Go 的结构体,给我的感觉同 C 语言的结构体非常相似。通过对一些类型的组合形成一个新的类型,同样成员中没有方法。可以组成结构体的成员也可以是结构体。
type Person struct {
name string
age int
}
如上代码定义了一个 Person 的结构体,结构体包括 name 和 age 两个成员。需要注意的是结构体名称在同一包下是要唯一的。结构体内成员名称也必须是唯一的。
初始化
前面只是定义了一个 Person 的结构体的类型,并不是一个实例化的对象。
命令式初始化
package main
import "fmt"
type Person struct {
name string
age int
}
func main() {
p := Person {
name : "Jack",
age : 30,
}
fmt.Println(p)
}
如上代码以命令式初始化了一个 Person 结构体,即 key : value 的形式为结构体成员赋值。需要注意的是最后一个成员后的“,”不能省略,否则会编译错误。 下图是程序输出
顺序初始化
func main() {
p := Person{"Jack", 30}
fmt.Println(p)
}
如上代码以顺序初始化了一个 Person 结构体。需要注意的是初始化的顺序严格按照结构体定义顺序,并且必须初始化全部成员。