package main
import"fmt"//父类(父结构体)type Person struct{
id int
name string
age int}//子类(子结构体)type Student struct{
Person //也可取变量名(p Person)
class int
score int}funcmain(){//创建对象(结构体)var stu Student
//student继承与父类person 可以直接使用父类的结构体成员//stu.Person.name = "张三"//stu.Person.age = 18//stu.Person.id = 1001//stu.p.name//stu.p.age//stu.p.id//直接按继承语法来
stu.name ="wang"
stu.age =10
stu.id =1001
stu.class =302
stu.score =99}
同名覆盖
package main
import"fmt"type person struct{
name string}type student struct{
person
name string}funcmain(){//对象初始化//var stu student子类赋值子类和父类结构体有相同的成员名 默认赋值为子类 采用就近原则//stu.name = "瞎子"父类赋值//stu.person.name = "李青"
fmt.Println(stu.name)
fmt.Println(stu.person.name)}
指针成员
package main
import"fmt"type person1 struct{
id int
name string}type student1 struct{*person1 //指针作为匿名字段
class int}funcmain(){var stu student1
stu.class =301//stu.person1是一个指针类型 默认值为nil 0x0//需要对指针进行创建空间 new(person1)//stu.person1=new(person1)(*stu.person1).name="wang"//stu.name = "wang"
stu.person1 =&person1{1001,"wang"}
多继承
package main
import"fmt"type person2 struct{
name string
age int}type person3 struct{
id int}type student2 struct{//结构体成员为多个匿名字段
person2
person3
class int}funcmain(){//var stu student2////stu.person3.id = 1001//stu.person2.name = "wang"//stu.age = 10//stu.class = 300//stu.sex = "男"
stu:=student2{person2{"wang",12,},person3{100},100,-5}
fmt.Println(stu)}
基础本质就是结构体package mainimport "fmt"//父类(父结构体)type Person struct { id int name string age int}//子类(子结构体)type Student struct { Person //也可取变量名(p Person) class int score int}func mai...