5.3 扩展已有类型

一、扩充已有类型

  1. 定义别名:最简单

    // queue.go
    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
    }
    
    
    // 主函数
    package main
    
    import (
    	"fmt"
    	"imooc-learn/4/queue"
    )
    
    func main() {
    	q := queue.Queue{1}
    
    	q.Push(2)
    	q.Push(3)
    	fmt.Println(q.Pop())
    	fmt.Println(q.Pop())
    	fmt.Println(q.IsEmpty())
    
    	fmt.Println(q.Pop())
    	fmt.Println(q.IsEmpty())
    }
  2. 使用组合:最常用

    // 对原有类进行引入
    type myTreeNode struct {
    	node *tree.TreeNode
    }
    
    // 添加内容,组合使用
    func (myNode *myTreeNode) postOrder() {
    	if myNode == nil || myNode.node == nil {
    		return
    	}
    	left := myTreeNode{myNode.node.Left}
    	left.postOrder()
    	right := myTreeNode{myNode.node.Right}
    	right.postOrder()
    	myNode.node.Print()
    }

Last updated

Was this helpful?