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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM