结构的创建:
//使用了工厂函数
func createNode(value int) *treeNode {
//返回了局部地址,在go中是合法的
return &treeNode{value : value}
}
var root treeNode
root = treeNode{value:3}
root.left = &treeNode{}
root.right = &treeNode{5, nil, nil}
root.right.left = new(treeNode)
root.left.right = createNode(2)
nodes := []treeNode{
{value:3},
{},
{6,nil,nil},
}
fmt.Println(nodes)
//值接收者,拷贝一份node
func (node treeNode) setValue(value int) {
node.value = value
}
//指针接收者,直接用node原先的地址
func (node *treeNode) setValue(value int) {
node.value = value
}
nil 指针也可以调用方法。
//1.别名
package queue
type Queue []int
func (q *Queue) Push(v int) {
*q = append(*q,v)
}
func (q *Queue) Pop() int {
head := (*q)[0]
*q = (*q)[1:]
return head
}
func (q *Queue) IsEmpty() bool {
return len(*q) == 0
}
//2.组合
type myTreeNode struct {
node *tree.Node
}