想用别名的方法扩展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语言没有继承~
以上是我的个人理解,如有错误,请多指正~
00 -
划火柴123
提问者
2020-07-19
看了下有类似的问题,别名并不是“扩展”
00
相似问题