我如何在golang中实现void*?
我在Golang做一棵(非二叉)树 在Java中,我会使用我如何在golang中实现void*?,go,Go,我在Golang做一棵(非二叉)树 在Java中,我会使用 class Node{ List <Object> data; } 类节点{ 列出数据; } 其中,数据可以是指向数据的指针,也可以是指向子节点的指针 在C或C++中,我将使用Value*./P> 我应该在golang中使用什么类型Go中没有空指针。处理这个问题的方法是使用空接口interface{},它本质上由所有类型实现。刚才我问了一个问题,你可以在这里找到 我从来没有尝试过用任何语言来解决这个问题,这样做
class Node{
List <Object> data;
}
类节点{
列出数据;
}
其中,数据可以是指向数据的指针,也可以是指向子节点的指针
<>在C或C++中,我将使用Value*./P>
我应该在golang中使用什么类型Go中没有空指针。处理这个问题的方法是使用空接口
interface{}
,它本质上由所有类型实现。刚才我问了一个问题,你可以在这里找到 我从来没有尝试过用任何语言来解决这个问题,这样做行吗
阅读重复的问题后进行编辑我知道您并不是在问关于实现的问题,还是享受吧♥︎
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>}
主程序包
进口(
“fmt”
)
类型节点结构{
列表[]*节点
数据接口{}
}
func main(){
平凡:=节点{}
叶:=节点{数据:1}
树:=节点{
列表:[]*节点{
&叶子,
&叶子,
},
}
出局(琐碎)
外(叶)
出(树)
}
func out(x接口{}){
fmt.Printf(“%T:%+v\n”,x,x)
}
//main.Node:{List:[]数据:}
//main.Node:{List:[]数据:1}
//main.Node:{List:[0xc82000e180 0xc82000e180]数据:}
还有不安全的.Pointer,它不太安全,因为它可以强制为任意类型。没错,interface{}
更类似于Object
,尽管它只是一种其他类型都“是”的类型。派对迟到了,但为了方便其他人阅读,@LinearZoetrope当然可以,但你可以使用。