Golang面向对象_继承

package main

import "fmt"

type Person struct {
    name string //名字
    sex  byte   //性别
    age  int    //年龄
}

type Student struct {
    Person //只有类型,没有名字,匿名字段,继承了Person的成员
    id     int
    addr   string
}

func main() {
    //顺序初始化
    var s1 Student = Student{Person{"mike", 'm', 18}, 1, "北京"}
    fmt.Println("s1 = ", s1)

    //自动推导类型
    s2 := Student{Person{"mike", 'm', 18}, 1, "北京"}
    //fmt.Println("s2 = ", s2)
    //%+v, 显示更详细
    fmt.Printf("s2 = %+v
", s2)

    //指定成员初始化,没有初始化的常用自动赋值为0
    s3 := Student{id: 1}
    fmt.Printf("s3 = %+v
", s3)

    s4 := Student{Person: Person{name: "mike"}, id: 1}
    fmt.Printf("s4 = %+v
", s4)

    //s5 := Student{"mike", 'm', 18, 1, "北京"} //err

}
s1 =  {{mike 109 18} 1 北京}
s2 = {Person:{name:mike sex:109 age:18} id:1 addr:北京}
s3 = {Person:{name: sex:0 age:0} id:1 addr:}
s4 = {Person:{name:mike sex:0 age:0} id:1 addr:}
原文地址:https://www.cnblogs.com/wt645631686/p/9646580.html