Jak zdobyć ostatni element plastra?


167

Jaka jest metoda Go na wyodrębnienie ostatniego elementu plasterka?

var slice []int

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

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

Powyższe rozwiązanie działa, ale wydaje się niezręczne.

Odpowiedzi:


297

Aby przeczytać tylko ostatni element plasterka:

sl[len(sl)-1]

Aby go usunąć:

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

Zobacz tę stronę o sztuczkach z plastrami


34
Wielkie dzięki! Chociaż wydaje się to głupie, nie dodali -1indeksu, który Python ma ...
Morgan Wilde

3
Podoba mi się -1język z Pythona, chociaż często prowadzi to do trudnych do debugowania błędów.
weberc2

11
Świadomie zostawili to na zewnątrz. Było nieoczywiste i podatne na błędy. Ogólnie Go jest ostrożny w kwestii „zbyt dużego znaczenia”; nie zawiera również przeciążenia metody / operatora, wartości domyślnych parametrów funkcji itp., które IMHO podąża w podobnym duchu filozoficznym. Zobacz tę dyskusję i inne: groups.google.com/forum/#!topic/golang-nuts/yn9Q6HhgWi0
Toni Cárdenas

2
Nie jestem pewien, ale mam panic: runtime error: index out of rangedla profiles[len(profiles)-1].UserId, myślę, że długość plastra wynosi 0, więc panikuje?
tom10271

@ tom10271 Tak, nie możesz pobrać ostatniego elementu wycinka, jeśli nie ma takiego elementu, tj. jeśli w ogóle nie ma elementów.
Toni Cárdenas

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.