GoLang二叉树 - 使用界面和结构

时间:2017-01-30 21:59:49

标签: go

我正在尝试使用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指针对象的访问

如何实例化和使用左右?

1 个答案:

答案 0 :(得分:1)

您无需将s声明为node*node_element可以用作node。您也永远不希望有指向界面的指针,因此将leftright类型更改为node

然后您可以直接分配字段:

s := &node_element{}
s.add(1)
s.left = &node_element{element: 2}
s.right = &node_element{element: 3}