主要知識點: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() }