golang 返回 []*TreeNode{} 和返回 []*TreeNode{nil} 有什么区别



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

type TreeNode struct {
Val   int
Left  *TreeNode
Right *TreeNode
}
func test() []*TreeNode {
return []*TreeNode{}
}
func test1() []*TreeNode {
return []*TreeNode{nil}
}

我试图在TreeNode上编写一个递归func,但是,如果我使用test样式来表示叶节点,我将从调用方func获得一个空的TreeNode切片。

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

我觉得对于test1,它给了我一个空TreeNode的点,然而,test代码给了我nil的点。。。我不确定我做得对不对。你能给我指一下正确的术语或概念吗?这将非常好。

此外,如果你能让我更多地了解下划线逻辑,那就太好了。

提前谢谢。

这返回一个空切片:

return []*TreeNode{}

这返回一个包含一个元素的切片,该元素是一个零指针:

return []*TreeNode{nil}

但这些都不会给你TreeNode。第二个指针为零。如何解释这些取决于代码的其余部分,但我怀疑其中任何一个都不是您真正想要的,因为没有一个可以具有val字段。

最新更新