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}            
      }
Last modification:September 23, 2020
如果觉得我的文章对你有用,请随意赞赏