二叉树前序遍历递归实现时,作为参数的slice会在同级节点那里的值被覆盖而不是增加。是什么问题?如代码

tomleoken · · 865 次点击
值传递对于引用类型传递的是指针的值, 所以值传递并不是你说的“参数传递过程中理论上下层函数对其更改是可以影响到上层函数的吧”的原因,slice是引用类型才是。
#4
更多评论
func (bt \*BinaryTree)PreOrderRec(v \*[]interface{}) 参数采用指针就好了。 不过很奇怪,slice本身应该是引用类型吧,那作为参数传递时,应该就是像map或者指针类型的一样,下层函数改动会影响上层函数的吧。为什么在这里却不是呢,弄得好像值传递一样。
#1
slice(map)记得是很特殊的值。 主要在于在扩展时他值的位置会法身变动。这时会有类似引用的行为 但他本身又不完全是引用值。
#2