go 接口

golang中的接口,
1.不需要显示的实现,只要一个变量,含有接口类型中的所有方法,那么这个变量就实现了这个接口,因此,golang中没有implemet类似的关键字
2.如果一个变量含有多个interface类型的方法,那么这个变量就实现了多个接口
3.如果一个变量只含有了1个interface的部分方法,那么这个变量没有实现这个接口
示例 demo40
 
package main

import "fmt"

//车接口
type carer interface {
  GetName() string  
  Run()
  DiDi()
}

//宝马结构体
type BMW struct {
  Name string
}

//宝马实现的获取名字的方法
func (p *BMW) GetName() string {
  return p.Name
}

func (p *BMW) Run() {
  fmt.Printf("%s is running\n", p.Name)
}

func (p *BMW) DiDi() {
  fmt.Printf("%s is didi\n", p.Name)
}

//奔驰结构体
type BENCHI struct {
  Name string
}

func (p *BENCHI) GetName() string {
  return p.Name
}

func (p *BENCHI) Run() {
  fmt.Printf("%s is running\n", p.Name)
}

func (p *BENCHI) DiDi() {
  fmt.Printf("%s is didi\n", p.Name)
}

func main() {

  var car carer
  fmt.Println(car)

  //BMW结构体赋值给 bmw
  var bmw BMW
  bmw.Name = "宝马"
  car = &bmw

  fmt.Println(car.GetName())
  car.Run()
  car.DiDi()

  var benchi BENCHI
  benchi.Name = "奔驰"
  car = &benchi

  fmt.Println(car.GetName())
  car.Run()
  car.DiDi()

}
posted @ 2022-08-18 21:53  5656923  阅读(40)  评论(0)    收藏  举报