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

tomleoken · · 888 次点击
func (bt \*BinaryTree)PreOrderRec(v \*[]interface{}) 参数采用指针就好了。 不过很奇怪,slice本身应该是引用类型吧,那作为参数传递时,应该就是像map或者指针类型的一样,下层函数改动会影响上层函数的吧。为什么在这里却不是呢,弄得好像值传递一样。
#1
更多评论
slice(map)记得是很特殊的值。 主要在于在扩展时他值的位置会法身变动。这时会有类似引用的行为 但他本身又不完全是引用值。
#2
golang里的slice底层会指向一个数组,slice在append之后会指向新的数组,感兴趣可以去看看golang的slice底层实现。
#3