主要知识点:node
如下为代码示例:编程
package main import "fmt" //实体 结构体 定义 type treeNode struct { Value int Left, Right *treeNode } //自定义工厂方法 实现构造函数功能 func createTreeNode(value int) *treeNode { return &treeNode{Value:value} //此处返回一个局部变量地址给外部使用,若是在 C++ 中,这是一个错误写法,会致使错误 //但在 Go中 不会出现问题 } //为结构体定义方法,有一个接收者的概念,这个方法是 值接受者 // 为treeNode 定义方法,node至关于 Java 中的 this func (node treeNode) print() { fmt.Println(node.Value) } //定义set 方法,这里是 指针接收者 func (node *treeNode) setValue(value int) { if node == nil { fmt.Println("Setting Value to nil " + "node. Ignored.") return } node.Value = value } //遍历对象方法 func (node *treeNode) traverse() { if node == nil{ return } node.Left.traverse() node.print() node.Right.traverse() } func main() { //申明空结构体 var root treeNode //初始化部分属性 root = treeNode{Value:3} //初始化空的结构体 root.Left = &treeNode{} //申明时初始化所有属性 root.Right = &treeNode{5,nil,nil} // new 是内置方法,返回对象的指针 root.Left.Right = new(treeNode) root.Right.Left = createTreeNode(2) //在Slice 中省略 结构体名的写法 nodes :=[]treeNode{ {Value:3}, {}, {6,nil,&root}, } fmt.Println(nodes) root.print() //3 root.Right.Left.setValue(4) //4 root.Right.Left.print() //遍历对象方法 root.traverse() }