* * * * *
--: 作者: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语言特有