struct是实现面向对象的重要技术,基本上都跟类型声明type name underlying-type
结合使用。
struct是值类型,所以它的零值是所有成员的零值。由于值类型在作为函数参数时的局限性,所以经常配合指针一起使用。
声明
type Employee struct {
ID int
Name string
Address string
}
一行一个成员,中间没有逗号或分号,大写的成员可以在包外访问。
如果类型相同,也可以考虑定义在一行,例如
type Employee struct {
ID int
Name, Address string
}
结构体中不能定义同名结构体的成员,但可以定义同名结构体的指针类型的成员,例如
type Employee struct {
ID int
Name, Address string
Leader *Employee
}
初始化
可以在声明时直接初始化,也可以声明后再一个个赋值。先看一个最直接的方式。
var empl Employee
empl.ID = 1
empl.Name = "foo"
empl.Address = "nanshan"
还可以更快地初始化
empl2 := Employee{2, "foo", "nanshan"}
所以