问题描述

elements.Pop()
.Pop()elements

在许多其他语言中,弹出"列表的第一个元素是单行的,这让我相信我下面的实现是草率和冗长的.有没有更好的办法?

In many other languages, "popping" the first element of a list is a one-liner, which leads me to believe my implementation below is sloppy and verbose. Is there a better way?

type Queue struct {
    elements []interface{}
}

func (queue *Queue) Push(element interface{}) {
    queue.elements = append(queue.elements, element)
}

func (queue *Queue) Pop() interface{} {
    element := queue.elements[0]
    if len(queue.elements) > 1 {
        queue.elements = queue.elements[1:]
    } else {
        queue.elements = make([]interface{}, 0)
    }
    return element
}
len(queue.elements) == 0Queue
Queuelen(queue.elements) == 0

推荐答案

这些你试过了吗?

从队列中弹出

x, a = a[0], a[1:]

从栈中弹出

x, a = a[len(a)-1], a[:len(a)-1]

a = append(a, x)

这篇关于如何(简洁地)从 Go 中的切片中删除第一个元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!