Я создал простую очередь в 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
. Это не недосмотр, что я не проверяю границы.