Go语言之组合(十九)
面向对象特性:继承
目录结构
├── demo
│ └── demo.go
├── go.mod
└── main.go
demo.go文件
package demo
import "fmt"
type Animal struct {
Colour string
}
type Dog struct {//dog 结构体包含了Animal结构体的属性和方法
Animal //组合
ID int
Name string
Age int
}
func (d *Dog)Run() {
fmt.Println("ID:",d.ID,"DOG is running")
}
func (a *Animal)Eat() {
fmt.Println("yu yu yu yu")
}
main.go文件
package main
import (
"./demo"
"fmt"
)
func main() {
dog := new(demo.Dog)
dog.ID = 1
dog.Name = "GG"
dog.Age = 5
dog.Colour = "red" //继承了Animal的属性
dog.Eat() //继承了Animal的方法 yu yu yu yu
fmt.Println("\r")
fmt.Println(dog) //&{{red} 1 GG 5}
}