一、struct结构的定义:
type person struct {
name string
age int
}
这样就定义了一个person结构,name是字符串型的姓名;age是int型的年龄。
二、声明一个struct的变量:
var p person
三、赋值:
方法有三种,分别如下:
1、直接赋值
p.name = "xiaoming"
p.age = 12
2、按照顺序初始化值
tom := person{"Tom", 20}
3、通过field:value的方式初始化,这样顺序可以随意
john := person{age:21, name:"John"}
四、struct的匿名字段
GO支持只提供字段类型,不提供字段名的声明方式。也就是匿名字段,也叫嵌入字段。(可以用java中的继承理解)
当匿名字段是一个struct(或其他自定义类型)的时候,那么这个struct所拥有的全部字段都被隐式的引入到当前定义的这个struct中。
举个例子:
type Human struct{
name string
age int
}
type Student struct{
Human //匿名字段,那么Student就拥有了Human的所有字段
score int
}
func main(){
var xiaoming = Student{Human{"xiaoming", 20}, 98}
fmt.Println( xiaoming.Human.name);
fmt.Println( xiaoming.Human.age);
fmt.Println( xiaoming.score);
}