面向接口编程
目录
如果你听说过面向对象编程,那么你很有可能也听说过面向接口编程。面向接口编程的核心思想是,只要你实现了这个方法,你就符合这个 接口。听起来有点玄乎,看个例子吧:
package main
import (
"fmt"
)
type Walker interface {
Walk()
}
type Animal struct {
}
func (a *Animal) Walk() {
fmt.Println("Animal walk")
}
type Duck struct {
Animal
Color string
}
func main() {
var x Walker = &Duck{}
x.Walk()
}
Go语言中不需要像Java那样显示的声明是否实现了某个接口,编译器会自动检测,如果实现了接口所要求的所有函数,那么这个实例就 符合该接口。
请注意,倒数第三行,为什么要写成 var x Walker = &Duck{} 而不是 var x Walker = Duck{} 呢?
正如上面所说,实现了 Walk 这个方法的类型,是 *Animal,而不是 Animal,因此,只有 *Animal, *Duck 符合这个接口的定义,
Animal 和 Duck 却不符合。Go并没有在这种情况下帮我们做自动转换。
邮件 订阅
RSS 订阅
Web开发简介系列
数据结构的实际使用
Golang 简明教程
Python 教程