go queue

     阅读(128)  2019-05-11 12:54:37

队列是一个先进先出的数据结构,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循环不断从队列中取出元素,当队列中没有元素的时候结束循环。

文章评论

Keep it simple,stupid
文章数
290
总访问量
305800
今日访问
443
最近评论

xuehaoyun : 很不错,来围观一下
tujiaw : 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞 : 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
于淞 : 你好,这个文章的源码能分享一下吗,838106303@163.com,谢谢了 上面的链接不能用了
tujiaw : 多谢多谢
essaypinglun college-paper.org : 很好的博客,赞赞
Folly : 这个实现有点奇怪,Qt为什么没有统一的比对方法。
过多s : alert("hello, world!")
tujiaw : 还不错哦
回到顶部