• golang中切片作为函数参数


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

    初始方式

    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增加失败

  • 相关阅读:
    js中BOM和DOM的区别
    正则表达式
    第一个网页
    RegExp
    pseudoclasses&伪元素
    自我介绍
    DOM document 对象
    神经网络学习小节
    果然是神经网络
    果然是实践出真知啊
  • 原文地址:https://www.cnblogs.com/9527s/p/15226251.html
Copyright © 2020-2023  润新知