- go语言的面向对象相对简单,只支持封装,不支持继承和多态,go中用面向接口来做继承和多态的任务
- go中没有class ,只有struct
- struct的创建
type treeNode struct {
value int
left, right *treeNode
}
- struct的声明和初始化
//声明一个结构体类型
var root treeNode
//初始化方式一
root = treeNode{value:3}
//初始化方式二
root.left = &treeNode{}
root.right = &treeNode{5,nil,nil}
//初始化方式三
root.right.left = new(treeNode)
//new(),只接受一个参数,这个参数是一个类型,分配好内存后,返回一个指向该类型内存地址的指针。同时请注意它同时把分配的内存置为零,也就是类型的零值。
//这里,root结构本身,而root.left是一个地址,在go中不论地址含是结构本身,一律用"."来访问成员, 而C++中,访问地址的成员要用"->"
//初始化方法四 使用工厂方法
root.right.right = creatNode(4)
nodes := []treeNode{
{value:3}, //这里相当于 treeNode{value:3}, 前面的treeNode省略掉了
{},
{6,nil,&root},
}
fmt.Println(nodes) //输出结果: [{3 <nil> <nil>} {0 <nil> <nil>} {6 <nil> 0xc420090020}]
- struct的工厂化方法,go的结构体没有构造函数一说,但我们可以给我们定义的结构体创建一个工厂方法,用来初始化结构体
- 工厂方法返回了一个局部变量地址
func cre