【发布时间】:2014-06-25 06:17:32
【问题描述】:
我在 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
}
请注意,如果len(queue.elements) == 0,我希望Queue 恐慌。我不检查边界并不是疏忽。
【问题讨论】: