Go基础_1_41 结构体匿名字段

Tutorial: Go初级 Category: Go Published: 2026-04-07 13:58:26 Views: 21 Likes: 0 Comments: 0
package main

import "fmt"

// 1.定义父类
type Person struct {
    name string
    age  int
}

// 2.定义子类
type Student struct {
    Person        // 模拟继承结构
    school string // 子类的新增属性
}

func main() {
    /*
        面向对象:OOP

        Go语言的结构体嵌套:
            1.模拟继承性:is - a
                type A struct{
                    field
                }
                type B struct{
                    A //匿名字段
                }

            2.模拟聚合关系:has - a
                type C struct{
                    field
                }
                type D struct{
                    c C //聚合关系
                }
    */

    // 1.创建父类的对象
    p1 := Person{name: "张三", age: 30}
    fmt.Println(p1)
    fmt.Println(p1.name, p1.age)

    // 2.创建子类的对象
    s1 := Student{Person{"李四", 17}, "千锋教育"}
    fmt.Println(s1) // {{李四 17} 千锋教育}

    s2 := Student{Person: Person{name: "rose", age: 19}, school: "北京大学"}
    fmt.Println(s2) // {{rose 19} 北京大学}

    var s3 Student
    s3.Person.name = "王五"
    s3.Person.age = 19
    s3.school = "清华大学"
    fmt.Println(s3) // {{王五 19} 清华大学}

    s3.name = "Ruby" // 可以简写
    s3.age = 16      //
    fmt.Println(s3)  // {{Ruby 16} 清华大学}
}