golang中的接口,不需要显示的实现,只要一个变量,含有接口类型中的所有方法,那么这个变量就实现了这个接口,因此,golang中没有implemet类似的关键字
如果一个变量含有多个interface类型的方法,那么这个变量就实现了多个接口
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()
}