golang 的Interface 实现,为何不指明实现的哪个接口?
type Animal interface {
Run()
Eat()
}
实现:
type Dog struct {
Name string
}
func (d *Dog) Run() {
}
func (d *Dog) Eat() {
}
这里有一个疑问就是,为何golang 不像java一样,实现接口的时候,指明是实现的哪个接口?
golang 的Interface 实现,为何不指明实现的哪个接口?
type Animal interface {
Run()
Eat()
}
实现:
type Dog struct {
Name string
}
func (d *Dog) Run() {
}
func (d *Dog) Eat() {
}
这里有一个疑问就是,为何golang 不像java一样,实现接口的时候,指明是实现的哪个接口?
7 回答5.6k 阅读
6 回答7.1k 阅读✓ 已解决
4 回答2.5k 阅读
2 回答1.1k 阅读✓ 已解决
1 回答2.3k 阅读
2 回答1.1k 阅读
3 回答1.6k 阅读
可能作者写 Java 写累了, 但又不放心完全抛弃类型, 于是在鸭子类型与标称类型中取个平衡 -> 结构化类型!
官网这里提到:
人家决定那样设计. 这语言设计得也,,,挺清秀的. 不过, 这才哪到哪, 如果你之前是写 Java 的, 慢慢你会发现 Go 作者脑回路清奇, 哈哈哈~
参考:
https://go.dev/doc/faq#implem...
https://studygolang.com/artic...
https://jordanorelli.com/post...