美文网首页
go语言method有没有继承顺序,实例探讨

go语言method有没有继承顺序,实例探讨

作者: 码字的程序员 | 来源:发表于2022-07-22 16:15 被阅读0次
编程5.png

计算机编程语言,尤其是面向对象的编程语言,虽然语法不同,但其原理大都是相通的!那么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 Rose struct {
    Lan    string
    Flower //匿名字段,Rose继承了Flower的字段和方法
    Herbaceous
}

func main() {

    var r Rose
    r.flower_language()
  //r.Flower.flower_language()
  //r.Herbaceous.flower_language()

}

代码输出:

ambiguous selector r.flower_language

代码解析:

如上代码,我们在Rose结构体当中用了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方法的继承、重写,继承顺序的探讨 - 大器编程

相关文章

网友评论

      本文标题:go语言method有没有继承顺序,实例探讨

      本文链接:https://www.haomeiwen.com/subject/dvgmirtx.html