一个结构体
Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性
定义结构体
结构体本身就是一种类型,就如同基本数据类型一样,可以声明实例。
type Person struct {
name string
sex string
age int
}
匿名字段结构体:只提供类型而不写字段名
type Student struct {
Person
id int
addr string
}
type Student struct {
Person
int
mystr
}
结构体声明实例
只有当结构体实例化时,才会真正地分配内存。 也就是必须实例化后才能使用结构体的字段。
基本实例化
实例化一个结构体p:
var p Person
匿名结构体
var user struct{Name string; Age int}
定义了结构体同时使用这个结构体创建实例
创建指针类型结构体
var p2 = new(Person)
取结构体的地址实例化
p3 := &Person{}
Go语言帮我们实现的语法糖 —>p3.name=“AA” (*p3).name=“AA”
结构体初始化
基本初始化
先声明后初始化
var p Person
p.name = “AA”
使用键值对初始化
使用值的列表初始化
1.必须初始化结构体的所有字段。
2.初始值的填充顺序必须与字段在结构体中的声明顺序一致。
3.该方式不能和键值初始化方式混用。
结构体的打印
打印:{字段值 字段值 字段值 …}
fmt.Println(p)
打印结果:{ 0} //空空0
p就是Person的一个实例化,初始化完结构体p就会分配内存,p的字段就默认值了(字符串默认为空“”)