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.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.4k 阅读
2 回答879 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.1k 阅读
可能作者写 Java 写累了, 但又不放心完全抛弃类型, 于是在鸭子类型与标称类型中取个平衡 -> 结构化类型!
官网这里提到:
人家决定那样设计. 这语言设计得也,,,挺清秀的. 不过, 这才哪到哪, 如果你之前是写 Java 的, 慢慢你会发现 Go 作者脑回路清奇, 哈哈哈~
参考:
https://go.dev/doc/faq#implem...
https://studygolang.com/artic...
https://jordanorelli.com/post...