go queue

Table of Contents

    队列是一个先进先出的数据结构,go语言实现一个队列,为了通用队列的元素使用了interface,通常一个队列有如下方法:

    • Push:向队列尾部压入一个元素
    • Pop:从队列头部弹出一个元素
    • Front:获取队列头部元素
    • Size:队列的长度
    package queue 
    
    import "errors"
    import "fmt"
    
    type queue struct {
    	ls []interface{}
    }
    
    func New() *queue {
    	return &queue{}
    }
    
    func (q *queue)Push(i interface{}) {
    	q.ls = append(q.ls, i)
    }
    
    func (q *queue)Front() (interface{}, error) {
    	if len(q.ls) > 0 {
    		return q.ls[0], nil
    	}
    	return 0, errors.New("queue is empty")
    }
    
    func (q *queue)Pop() {
    	_, err := q.Front()
    	if err == nil {
    		q.ls = q.ls[1:]
    	}
    }
    
    func (q *queue)Size() int {
    	return len(q.ls)
    }
    
    func (q *queue)Print() {
    	fmt.Println(q.ls)
    }
    
    

    使用方法:

    	q := queue.New()
    	q.Push("a")
    	q.Push("b")
    	q.Push("c")
    	q.Push("d")
    	for {
    		if d, err := q.Front(); err == nil {
    			fmt.Println("pop:", d.(string))
    			q.Pop()
    			q.Print()
    		} else {
    			break
    		}
    	}
    

    先向队列中压入四个元素,然后for循环不断从队列中取出元素,当队列中没有元素的时候结束循环。