Como obter o último elemento de uma fatia?


167

Qual é o caminho a seguir para extrair o último elemento de uma fatia?

var slice []int

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

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

A solução acima funciona, mas parece estranha.

Respostas:


297

Para apenas ler o último elemento de uma fatia:

sl[len(sl)-1]

Para removê-lo:

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

Veja esta página sobre truques de fatia


34
Muitíssimo obrigado! Mesmo que parece bobo eles não adicionar o -1índice Python tem ...
Morgan Wilde

3
Eu gosto -1do Python, embora muitas vezes leve a erros difíceis de depurar.
weberc2

11
Eles deixaram isso de fora conscientemente. Não era óbvio e propenso a erros. Ir em geral é cauteloso quanto a "muito significado"; Ele também não apresenta sobrecarga de método / operador, valores padrão para parâmetros de função, etc., que IMHO segue em uma linha filosófica semelhante. Veja esta discussão e outras: groups.google.com/forum/#!topic/golang-nuts/yn9Q6HhgWi0
Toni Cárdenas

2
Eu não tenho certeza, mas eu tenho panic: runtime error: index out of rangepara profiles[len(profiles)-1].UserId, eu acho que o comprimento do slice é 0 para que ele entra em pânico?
precisa saber é o seguinte

@ tom10271 Sim, você não pode obter o último elemento de uma fatia se não houver esse elemento, ou seja. se não houver elementos.
Toni Cárdenas

-10

Um pouco menos elegante, mas também pode fazer:

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

3
É o mesmo que sl[len(sl)-1:], mas que retorna uma fatia que contém o último elemento, em vez de apenas o último elemento. play.golang.org/p/kcThrqa-64c
Victor
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.