我在Golang中创建一个(非二进制)树。
在Java中,我会使用类似于
class Node{
List <Object> data;
}
其中data可以是指向数据的指针或指向子节点的指针
在C或C++中,我会使用空*。
我应该在golang中使用什么类型?
发布于 2016-07-21 00:17:57
我从来没有尝试过用任何语言来解决这个问题,这在Go中会起作用吗?
go play link看完重复的问题后编辑我看你不是在问关于实现的问题,不管怎么说,享受♥︎
package main
import (
"fmt"
)
type Node struct {
List []*Node
Data interface{}
}
func main() {
trivial := Node{}
leaf := Node{Data: 1}
tree := Node{
List: []*Node{
&leaf,
&leaf,
},
}
out(trivial)
out(leaf)
out(tree)
}
func out(x interface{}) {
fmt.Printf("%T:%+v\n", x, x)
}
// main.Node:{List:[] Data:<nil>}
// main.Node:{List:[] Data:1}
// main.Node:{List:[0xc82000e180 0xc82000e180] Data:<nil>}
发布于 2016-07-20 23:12:01
Go中没有空指针。处理此问题的方法是使用空接口interface{}
,该接口由所有类型固有地实现。我问了一个关于这个问题的问题,你可以在这里找到;Go equivalent of a void pointer in C
https://stackoverflow.com/questions/38492277
复制相似问题