go语言method有没有继承顺序,实例探讨
计算机编程语言,尤其是面向对象的编程语言,虽然语法不同,但其原理大都是相通的!那么go语言的method方法的继承是否也有像python一样的顺序继承的机制呢?我们来用一个简单的实例探讨一下。
package main
import "fmt"
type Flower struct{}
type Herbaceous struct{}
func (f Flower) flower_language() {
fmt.Println("这是花种类!")
}
func (h Herbaceous) flower_language() {
fmt.Println("这是草本植物!")
}
type Rows struct {
Lan string
Flower //匿名字段,Rows继承了Flower的字段和方法
Herbaceous
}
func main() {
var r Rows
r.flower_language()
//r.Flower.flower_language()
//r.Herbaceous.flower_language()
}ambiguous selector r.flower_language如上代码,我们在Rows结构体当中用了Flower匿名字段和Herbaceous匿名字段,以继承这两个结构体,然后尝试通过r.flower_language()来调用继承来的方法,发现发生ambiguous selector r.flower_language的错误,意思就是调用的方法模糊不清,因为Flower结构体和Herbaceous结构体都声明了这中method方法。如果使用r.Flower.flower_language()或r.Herbaceous.flower_language(),便可正常调用。
因此,结论是go语言结构体(类)的继承并没有像python那样的顺序机制。
go语言method方法的继承、重写,继承顺序的探讨 - 大器编程
| 留言与评论(共有 0 条评论) “” |