首页 > 其他 > 详细

golang中切片作为函数参数

时间:2021-09-05 20:17:40      阅读:16      评论:0      收藏:0      [点我收藏+]

随便写个获取二叉树后续遍历的值,结果让我很疑惑

初始方式

func postorderTraversal(root *TreeNode) []int {
    res:=make([]int,0)
    if root==nil{
        return res
    }
    dfs(root,res)
    return res
}

 func dfs(link *TreeNode,nums []int){
  if link==nil{
            return 
        }
        dfs(link.Left,nums)
        dfs(link.Right,nums)
        nums = append(nums,link.Val)
}

结果返回的res为空
技术分享图片

不得已改写为以下方式,不传递切片进入函数,使用全局变量

unc postorderTraversal(root *TreeNode) []int {
    res:=make([]int,0)
    if root==nil{
        return res
    }

    var dfs func(link *TreeNode)
    dfs = func(link *TreeNode){
        if link==nil{
            return 
        }
        dfs(link.Left)
        dfs(link.Right)
        res = append(res,link.Val)
    }
    dfs(root)
    return res
}

不禁疑惑,不是说切片底层为数组指针吗,为什么传入函数之后append增加失败

golang中切片作为函数参数

原文:https://www.cnblogs.com/9527s/p/15226251.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!