Go语言的面向对象
type Node struct {
Value int
Left, Right *Node
}func CreateNode(value int) *Node {
return &Node{Value: value}
}为结构体定义方法
值接受者和指针接受者
封装
包
扩展
Last updated
Was this helpful?
type Node struct {
Value int
Left, Right *Node
}func CreateNode(value int) *Node {
return &Node{Value: value}
}Last updated
Was this helpful?
Was this helpful?
func (node Node) Print() {
fmt.Print(node.Value, " ")
}
//nil指针也可以调用指针
func (node *Node) SetValue(value int) {
if node == nil {
fmt.Println("Setting Value to nil " +
"node. Ignored.")
return
}type myTreeNode struct {
node *tree.Node
}
func (myNode *myTreeNode) postOrder() {
if myNode == nil || myNode.node == nil {
return
}
left := myTreeNode{myNode.node.Left}
right := myTreeNode{myNode.node.Right}
left.postOrder()
right.postOrder()
myNode.node.Print()
}// A FIFO queue.
type Queue []int
// Pushes the element into the queue.
// e.g. q.Push(123)
func (q *Queue) Push(v int) {
*q = append(*q, v)
}
// Pops element from head.
func (q *Queue) Pop() int {
head := (*q)[0]
*q = (*q)[1:]
return head
}
// Returns if the queue is empty or not.
func (q *Queue) IsEmpty() bool {
return len(*q) == 0
}