Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何在golang中实现void*?_Go - Fatal编程技术网

我如何在golang中实现void*?

我如何在golang中实现void*?,go,Go,我在Golang做一棵(非二叉)树 在Java中,我会使用 class Node{ List <Object> data; } 类节点{ 列出数据; } 其中,数据可以是指向数据的指针,也可以是指向子节点的指针 在C或C++中,我将使用Value*./P> 我应该在golang中使用什么类型Go中没有空指针。处理这个问题的方法是使用空接口interface{},它本质上由所有类型实现。刚才我问了一个问题,你可以在这里找到 我从来没有尝试过用任何语言来解决这个问题,这样做

我在Golang做一棵(非二叉)树

在Java中,我会使用

 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当然可以,但你可以使用。