zoukankan      html  css  js  c++  java
  • 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增加失败

  • 相关阅读:
    typescript 箭头表达式
    typescript 参数类型
    ts介绍
    pm2
    koa2安装
    linux 搭建ftp
    CENTOS6.5 安装 mysql5.6 以及搭建双主
    bzoj 3043 (差分序列运用)
    poj 3277 City Horizon
    NOI2015 程序自动分析
  • 原文地址:https://www.cnblogs.com/9527s/p/15226251.html
Copyright © 2011-2022 走看看