33_同名字段的使用

在结构体中,如果结构体中含有继承父结构体,如果含有同名的字段,除了指明具体属于哪个结构体的字段外,默认操作:就近原则

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
 
}

猜你喜欢

转载自www.cnblogs.com/zhaopp/p/11565224.html