我正在尝试使用GoLang中的Interfaces和Struct来创建二叉树概念
我写了下面的代码
package main
import "fmt"
type node interface {
add(a int)
getval() int
}
type node_element struct {
element int
left *node
right *node
}
func (c *node_element) add(a int) {
c.element = a
}
func (c *node_element) getval() int {
return c.element
}
func main() {
var s node
s = &node_element{}
s.add(1)
fmt.Println(s.getval())
}
现在我如何实例化左右。我正在使用VIM和Go自动完成功能。在按下时自动完成。没有清单。这意味着没有发生对s指针对象的访问
如何实例化和使用左右?
答案 0 :(得分:1)
您无需将s
声明为node
,*node_element
可以用作node
。您也永远不希望有指向界面的指针,因此将left
和right
类型更改为node
。
然后您可以直接分配字段:
s := &node_element{}
s.add(1)
s.left = &node_element{element: 2}
s.right = &node_element{element: 3}