Wie kann ich (kurz und bündig) entfernen des ersten Elements aus einem slice in Go?

Hab ich baute eine einfache Warteschlange Gehen. Es verwendet einen internen Scheibe zu verfolgen seine Elemente. Elemente geschoben werden, in die Warteschlange, durch Anhängen an die Scheibe. Ich würde gerne umsetzen .Pop() durch entfernen des ersten Elements in elements.

In vielen anderen Sprachen, "popping" das erste element einer Liste ist ein one-liner, die führt mich zu glauben, meine Implementierung unten ist schlampig und ausführlich. Gibt es einen besseren Weg?

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
}

Bitte beachten Sie, dass Wünsche ich für die Queue zu Panik, wenn len(queue.elements) == 0. Es ist nicht ein versehen, dass ich nicht überprüfen Sie die Grenzen.

InformationsquelleAutor modocache | 2014-05-08
Schreibe einen Kommentar