我想了解接口类型simple它在 Go(语言)中的使用示例。
我阅读了网络文档,但我不明白。
go接口背后的想法是鸭子打字 http://en.wikipedia.org/wiki/Duck_typing。简单来说就是:如果你看起来像鸭子,嘎嘎叫起来也像鸭子,那么你就是鸭子。这意味着如果您的对象实现了鸭子的所有功能,那么将其用作鸭子应该没有问题。这是一个例子:
package main
import (
"fmt"
)
type Walker interface {
Walk() string
}
type Human string
type Dog string
func (human Human) Walk() string { //A human is a walker
return "I'm a man and I walked!"
}
func (dog Dog) Walk() string { //A dog is a walker
return "I'm a dog and I walked!"
}
//Make a walker walk
func MakeWalk(w Walker) {
fmt.Println(w.Walk())
}
func main() {
var human Human
var dog Dog
MakeWalk(human)
MakeWalk(dog)
}
Here a Human
is a Walker
and a Dog
is a Walker
。为什么?因为他们俩..好吧...Walk
。他们都实施了Walk () string
功能。这就是为什么你可以执行MakeWalk
在他们。
当您希望不同类型的行为方式相同时,这非常有用。一个实际的例子是文件类型对象(套接字、文件对象) - 您需要对所有这些对象进行写入和读取函数。然后,您可以以相同的方式使用 Write 和 Read,而不管它们的类型如何 - 这很酷。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)