如何(简洁地)从Go中的切片中删除第一个元素?

我在Go中建立了一个简单的队列。它使用内部切片来跟踪其元素。通过附加到切片将元素推入队列。我想.Pop()通过删除中的第一个元素来实现elements

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

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

}

请注意,Queue如果,我会感到恐慌len(queue.elements) == 0。我不检查界限不是疏忽大意。

回答:

你尝试过这些吗?

从队列弹出

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

从堆栈弹出

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

a = append(a, x)

来自:https :

//code.google.com/p/go-wiki/wiki/SliceTricks

以上是 如何(简洁地)从Go中的切片中删除第一个元素? 的全部内容, 来源链接: utcz.com/qa/434323.html

回到顶部