* * * * *
--: 作者:Fuzz
時間:2018年10 月13日
* * * * *
## 面向對象
1.go語言僅支持封裝、不支持繼承和多態
2.go語言沒有class,只有class
## 結構體創建
```
package main
import "fmt"
type treeNode struct {
value int
left,right *treeNode
}
func main() {
var root treeNode
root = treeNode{value:3}
root.left = &treeNode{}
root.right = &treeNode{5,nil,nil}
root.right.left = new(treeNode)
}
不論地址還是結構本身,一律使用.來訪問成員
```
## 構造函數
1. go語言沒有構造函數,要實現構造函數可以通過工廠模式
2. go語言可以返回局部變量地址。
3. 局部變量存放于棧,全局則在與堆。
工廠模式:http://www.runoob.com/design-pattern/factory-pattern.html
## 為結構定義方法
func (node treeNode) print(){
fmt.Println(node.value)
}
node treeNode 值接受者,(除去node為引用類型),treeNode 添加*代表指針接受者
## 值接受者、指針接受者
1.要改內容必須使用指針接受者
2.結構過大也考慮使用指針接受者
3.一致性如果有指針接受者,最好都是指針接受者,以防混亂
4.值接受者是go語言特有