Go: interface
结构体的接口实现方法参数为指针类型时,会报编译错误
package main type USB interface { method() } type Vale struct { } func (vale *Vale) method() { // 指针类型 println("vale method") } func main() { var vale Vale = Vale{} // var usb USB = vale var usb USB = &vale // 实现方法为指针类型时, 把vale地址赋给接口类型变量 usb.method() }

Extend VS Interface:
package main type Monkey struct { Name string } func (monkey *Monkey) climb() { println("monkey climb") } type Flyable interface { fly() } type Swimable interface { swim() } type LittleMonkey struct { Monkey } func (m *LittleMonkey) fly() { println(m.Name, "fly") } func (m *LittleMonkey) swim() { println(m.Name, "swim") } func main() { monkey := LittleMonkey{ Monkey{ Name: "vaginal", }, } monkey.climb() var swim Swimable = &monkey swim.swim() var fly Flyable = &monkey fly.fly() }

浙公网安备 33010602011771号