myTreeNode{myNode.node.Left} 为什么要用myTreeNode包一下呢
来源:4-3 扩展已有类型

Beebop
2020-03-15
func (myNode *myTreeNode) postOrder() {
if myNode == nil || myNode.node == nil {
return
}
left := myTreeNode{myNode.node.Left}
right := myTreeNode{myNode.node.Right}
left := myTreeNode{myNode.node.Left}
right := myTreeNode{myNode.node.Right}
里面为什么会有myTreeNode{}包一下这个是什么意思?是myTreeNode的初始化吗?可是myNode不是已经是myTreeNode了吗。这个涉及到什么语法点呢
写回答
1回答
-
ccmouse
2020-03-15
myNode.node.Left的类型是tree.Node,不是myTreeNode。不包一下的话后续代码会编译错误。
编译器的好处就是如果写错他会报出来。
"包一下"的原理就是我这个myTreeNode里面的字段就是tree.Node,这里用myNode.node.Left初始化一个新的myTreeNode,然后就可以调用myTreeNode的函数00
相似问题