golang 继承的实现(结构体的继承 )

发布时间 2024-01-08 18:09:59作者: 远洪

golang中的继承

在golang中,如果一个struct 中嵌套了另一个匿名结构体,那么这个结构体就可以直接访问这个匿名结构体中的字段和方法,从而实现继承。

package main

import (
    "fmt"
)

type Animal struct {
    Name string
    Age int
}

func(animal *Animal) getAge(){
    fmt.Println("动物的年龄是:",animal.Age)
}

type Cat struct {
    Animal   // 嵌入了Animal的匿名结构体,从而实现了继承
}

func(cat *Cat) CatRun(){
    fmt.Println("猫在跑,名字:",cat.Animal.Name)
}

type Bird struct {
    Animal    // 嵌入了Animal的匿名结构体,从而实现了继承Animal的字段和方法
}

func(bird *Bird) BirdFly(){
    fmt.Println("鸟在飞,名字:",bird.Animal.Name)
}

func main(){
    var cat Cat
    cat.Animal.Name = "小猫"
    cat.Animal.Age = 1
    cat.CatRun()
    cat.getAge()

    var bird Bird
    bird.Animal.Name = "小鸟"
    bird.Animal.Age = 2
    bird.BirdFly()
    bird.getAge()
}

运行结果如下: