最佳答案
我在 Go 中构建了一个简单的队列。它使用一个内部切片来跟踪其元素。元素通过附加到切片被推送到队列中。我想通过删除 elements
中的第一个元素来实现 .Pop()
。
在许多其他语言中,“弹出”列表的第一个元素是一行程序,这使我相信下面的实现是草率和冗长的。还有更好的办法吗?
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
。我不检查边界不是疏忽。