登录
首页 >  Golang >  Go问答

golang return *TreeNode{} 和 return *TreeNode{nil} 有什么区别

来源:stackoverflow

时间:2024-03-17 18:15:27 377浏览 收藏

Go语言中,`return []*TreeNode{}`返回一个空切片,不包含任何节点,而`return []*TreeNode{nil}`返回一个包含一个空指针的切片。这两种返回类型对于表示叶节点有不同的含义,在递归函数中使用时需要特别注意。

问题内容

我是 golang 新手,对以下内容感到困惑,

type TreeNode struct {
    Val   int
    Left  *TreeNode
    Right *TreeNode
}

func test() []*TreeNode {

    return []*TreeNode{}
}

func test1() []*TreeNode {

    return []*TreeNode{nil}
}

我正在尝试在 treenode 上编写递归函数,但是,如果我使用 test 样式来表示叶节点,我将从调用者函数中获得一个空的 treenode 切片。

如果我使用 test1 来表示叶节点,那么行为就是我想要的。

我觉得对于 test1 来说,它给了我一个指向空 treenode 的点,但是,test 代码给了我一个指向 nil 的点...我不确定我是否正确。 。你能给我指出正确的术语或概念来挖掘吗,那就太好了。

另外,如果你能让我了解更多关于下划线逻辑的知识,那就太好了。

提前致谢。


解决方案


这将返回一个空切片:

return []*treenode{}

这将返回一个包含一个元素的切片,并且该元素是一个 nil 指针:

return []*TreeNode{nil}

但是这些都没有给你一个 treenode 。第二个给你一个为零的 treenode 指针。如何解释这些取决于代码的其余部分,但我怀疑这两者是否真的是您想要的,因为没有一个可以拥有 val 字段。

本篇关于《golang return *TreeNode{} 和 return *TreeNode{nil} 有什么区别》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>