go语言method有没有继承顺序,实例探讨 计算机编程语言,尤其是面向对象的编程语言,虽然语法不同,但其原理大都是相通的!那么go语言的method方法的继承是否也有像python一样的顺序继承的机制呢?我们来用一个简单的实例探讨一下。go语言method有没有继承顺序实例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的继承、重写是否也跟python的不同呢?可以参考如下内容: go语言method方法的继承、重写,继承顺序的探讨 - 大器编程