golang 里面有用interface
定义接口的,而这个接口似乎并不是其它语言所定义的接口比如:Java python 一个个含义,我在网上看了一个示例代码:
package main
import (
"fmt"
)
type Phone interface {
call()
}
type NokiaPhone struct {
}
func (nokiaPhone NokiaPhone) call() {
fmt.Println("I am Nokia, I can call you!")
}
type IPhone struct {
}
func (iPhone IPhone) call() {
fmt.Println("I am iPhone, I can call you!")
}
func main() {
var phone Phone
phone = new(NokiaPhone)
phone.call()
phone = new(IPhone)
phone.call()
}
为什么能用struct
完成组合继承,还需要用interface
呢?
理解了接口了,跟其他语言类型是一样的,只是golang并不是继承,而是return一个接口,如果想实现抽象接口,可以使用
func newMethod(){
panic("Not implemented")
}
然后使用一个新的结构体就行
1
AngryPanda 2020-04-29 22:13:57 +08:00 via Android
这个例子,不是为了演示继承。
|
2
Hanggi 2020-04-29 22:16:52 +08:00
Duck typing 了解下
|
3
djoiwhud 2020-04-29 22:18:21 +08:00 via Android
golang 的 interface 与 java 的作用非常类似。本质上是为了实现多态特性而存在的。还和 cpp 的虚函数是一样的目标。此例子并没有显示出 go 的接口的用途。
|
4
lhx2008 2020-04-29 22:19:28 +08:00
这个是接口来做多态,但是一般用在函数参数或者成员变量里面, 不会有人真的在 main 里面 var 一个接口。
Go 的嵌套也算不上是完整的继承,只是把组合的成员变量和函数换了个变量空间释放了 |
5
janxin 2020-04-30 08:12:59 +08:00
python 有 duck typing 的吧
|