Go “如何表达?”;新";C+的算子+;围棋中的逻辑?

Go “如何表达?”;新";C+的算子+;围棋中的逻辑?,go,Go,我有一个这样的结构 type Node struct { data int next *Node } var root Node; 我想创建一个tmp节点并将地址传递给root。接下来,如何在go中编写这种逻辑 root.next = Node Go中没有构造函数。您只需使用类型名称创建一个对象,同时可以设置字段 tmp := Node { data: 1 } root.next = &tmp 您还可以获取指向新对象的指针 tmp := &Node

我有一个这样的结构

type Node struct {
    data int
    next *Node
}

var root Node;
我想创建一个tmp节点并将地址传递给root。接下来,如何在go中编写这种逻辑

root.next = Node

Go中没有构造函数。您只需使用类型名称创建一个对象,同时可以设置字段

tmp := Node {
    data: 1
}
root.next = &tmp
您还可以获取指向新对象的指针

tmp := &Node {
    data: 1
}
root.next = tmp
然后把它们放在一起

root.next = &Node {
    data: 1
}

还有一个
new
操作符,它相当于
&Node{}
,因此它不是很方便,因为您以后需要分配字段值。

我不太确定这里的问题是什么,但也许可以阅读?使用它,您可以执行
root.next=new(Node)
。这正是我需要的!顺便问一下,root.next=new(Node)和root.next=&Node{}之间有什么区别?我觉得这两个都可以think@AdamLee在本例中,它们是相同的,但文字表达式允许您在需要时设置内容值。顺便说一句,=和:=之间有什么区别?@AdamLee查看并获取它,在我的例子中,似乎不需要使用:=因为next已经定义好了。