Wie bekomme ich das letzte Element einer Scheibe?


165

Was ist der Go-Weg zum Extrahieren des letzten Elements eines Slice?

var slice []int

slice = append(slice, 2)
slice = append(slice, 7)

slice[len(slice)-1:][0] // Retrieves the last element

Die obige Lösung funktioniert, scheint aber umständlich.

Antworten:


294

Zum Lesen des letzten Elements eines Slice:

sl[len(sl)-1]

Zum Entfernen:

sl = sl[:len(sl)-1]

Siehe diese Seite über Slice-Tricks


34
Vielen Dank! Obwohl es albern erscheint, haben sie den -1Index, den Python hat, nicht hinzugefügt ...
— Morgan Wilde

3
Ich mag das -1von Python, obwohl es oft zu schwer zu debuggenden Fehlern führt.
— weberc2

10
Sie ließen es bewusst draußen. Es war nicht offensichtlich und fehleranfällig. Gehen Sie insgesamt umsichtig über "zu viel Bedeutung"; Es gibt auch keine Überladung von Methoden / Operatoren, Standardwerte für Funktionsparameter usw., was meiner Meinung nach in einem ähnlichen philosophischen Sinne geschieht. Siehe diese und andere Diskussionen: groups.google.com/forum/#!topic/golang-nuts/yn9Q6HhgWi0
— Toni Cárdenas

2
Ich bin nicht sicher, aber ich habe panic: runtime error: index out of rangedafür profiles[len(profiles)-1].UserId, ich denke, die Länge des Slice ist 0, also gerät es in Panik?
— Tom10271

@ tom10271 Ja, Sie können das letzte Element eines Slice nicht erhalten, wenn es kein solches Element gibt, dh. wenn es überhaupt keine Elemente gibt.
— Toni Cárdenas

-10

Etwas weniger elegant, kann aber auch:

sl[len(sl)-1: len(sl)]

3
Das ist das gleiche wie sl[len(sl)-1:], aber das gibt ein Slice zurück, das das letzte Element enthält und nicht nur das letzte Element. play.golang.org/p/kcThrqa-64c
— Victor
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.