想用别名的方法扩展treeNode,无法调用原有Print方法

来源:4-3 扩展已有类型

划火柴123

2020-07-19

我想用使用别名的方法扩展treeNode的例子,但是发现在给newNode添加方法的时候,不能调用原来treeNode的Print方法,只能访问Value、Left、Right。所以想问一下使用别名来扩展已有类型是只能扩展内建类型吗?

type newNode tree.Node

func (node *newNode) newTravel( ){
node.Print( ) // 这里无法调用tree.Node的Print( )方法
node.Value // 可以使用
node.left // 可以使用
}

写回答

2回答

爱吃apple的阿狸

2020-07-26

这里我理解得是,为某个类型创建方法,只能该类型使用,不能被“使用组合” 和 “别名”方式继承,意思就是给 tree.Node定义的Print(),SetValue()等方法,都只能是tree.Node类型的实例才能调用。

总之就是 

func (node myTreeNode) xxx() {}

方法名前面给哪个接收者定义的方法,就只能该接收者调用~

go语言没有继承~

以上是我的个人理解,如有错误,请多指正~

0
0

划火柴123

提问者

2020-07-19

看了下有类似的问题,别名并不是“扩展”

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程