分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
有一个TreeSort,代码如下
```
type tree struct {
value int
left, right *tree
}
func TreeSort(arr []int) {
var root *tree
for _, v := range arr {
root = add(root, v)
}
appendValues(arr[:0], root)
}
func appendValues(arr []int, root *tree) []int {
if root != nil {
arr = appendValues(arr, root.left)
arr = append(arr, root.value)
arr = appendValues(arr, root.right)
}
return arr
}
func add(root *tree, v int) *tree {
if root == nil {
root = new(tree)
root.value = v
return root
}
if v < root.value {
root.left = add(root.left, v)
} else {
root.right = add(root.right, v)
}
return root
}
```
想把它改写成函数add函数不需要有返回值的方法,应该如何实现呢?
我如果这么写
```
func add(root *tree, v int) {
if root == nil {
root = new(tree)
root.value = v
return
}
if v < root.value {
add(root.left, v)
} else {
add(root.right, v)
}
}
```
调试发现每次进来root都是nil,比较疑惑,函数要通过指针修改结构体一定是有返回值的那种写法吗
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1397 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传