Skip to content

go queue

Published: at 04:54 AM | 2 min read

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

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循环不断从队列中取出元素,当队列中没有元素的时候结束循环。