go 接口
作者:互联网
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()
}
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()
}
标签:Name,car,fmt,接口,BMW,func,go,string 来源: https://www.cnblogs.com/chenweihao/p/16600273.html