在结构体中,如果结构体中含有继承父结构体,如果含有同名的字段,除了指明具体属于哪个结构体的字段外,默认操作:就近原则
package main
import "fmt"
//定义一个结构体,存储学生信息
//要想被不同的包调用结构体,则结构体的名字首字母要大些,里面的变量名也要大写
type Student struct {
//和变量定义不同,不要写var关键字
Id int
Name string
Sex byte
Age int
Addr string
}
type mystr string
type Person struct {
//继承student结构体
Student //所谓匿名字段,就是只写结构体(变量)名字,而不写其类型
Name string
string //匿名字段,内置类型
mystr //自定义字段
}
func main() {
var p3 Person
p3.Name = "zhao"
fmt.Println("p3=", p3) //p3= {{0 0 0 } zhao }
//操作继承的同名字段
p3.Student.Name = "wang"
fmt.Println("p3=", p3) //p3= {{0 wang 0 0 } zhao }
//初始化
p4 := Person{Student{1, "li", 'w', 24, "sd"}, "hao", "jia", "steven"}
fmt.Println("p4=", p4) //p4= {{1 li 119 24 sd} hao jia steven}
fmt.Println(p4.mystr) //steven
}