Pointers golang return[]*TreeNode{}和return[]*TreeNode{nil}之间有什么不同

Pointers golang return[]*TreeNode{}和return[]*TreeNode{nil}之间有什么不同,pointers,go,recursion,Pointers,Go,Recursion,我是刚来golang的新手,对以下几点感到困惑 类型TreeNode结构{ Val int 左*树节点 右*树节点 } func测试[]*TreeNode{ return[]*TreeNode{} } func test1[]*TreeNode{ return[]*TreeNode{nil} } 我试图在TreeNode上编写递归func,但是,如果我使用测试样式来表示叶节点,我将从调用方func获得一个空TreeNode切片 如果我使用test1来表示叶节点,那么行为就是我想要的 我觉得对于t

我是刚来golang的新手,对以下几点感到困惑

类型TreeNode结构{ Val int 左*树节点 右*树节点 } func测试[]*TreeNode{ return[]*TreeNode{} } func test1[]*TreeNode{ return[]*TreeNode{nil} } 我试图在TreeNode上编写递归func,但是,如果我使用测试样式来表示叶节点,我将从调用方func获得一个空TreeNode切片

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

我觉得对于test1,它给了我一个指向空树节点的点,然而,测试代码给了我一个指向nil的点。。。我不确定我是否做对了。你能给我指出正确的术语或概念来挖掘吗,这将是非常棒的

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


提前感谢。

这将返回一个空切片:

return []*TreeNode{}
这将返回一个包含一个元素的切片,该元素是一个nil指针:

return []*TreeNode{nil}

但是这些都不能给你一个树状的。第二个给你一个树节点指针,它是nil。如何解释这些取决于代码的其余部分,但我怀疑这两个部分是否真的是您想要的,因为没有一个部分可以包含val字段。

一个部分包含nil,另一个不包含,与您编写的完全相同。我想这个问题与您没有包含在这里的代码有关。一个返回一个空片段,一个返回一个包含一个nil元素的片段。