Bir dilimin son elemanı nasıl elde edilir?


167

Bir dilimin son öğesini çıkarmak için Git yolu nedir?

var slice []int

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

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

Yukarıdaki çözüm işe yarıyor, ancak garip görünüyor.

Yanıtlar:


297

Sadece bir dilimin son elemanını okumak için:

sl[len(sl)-1]

Çıkarmak için:

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

Dilim hileleri hakkında bu sayfaya bakın


34
Çok teşekkürler! Aptalca görünse de -1Python'un sahip olduğu endeksi eklemediler ...
Morgan Wilde

3
-1Sık sık hata ayıklama hatalarına yol açmasına rağmen, Python'dan hoşlanıyorum .
weberc2

11
Onu bilinçli olarak dışarıda bıraktılar. Açık değildi ve hatalara yatkındı. Genel olarak gitmek 'çok fazla anlam' konusunda ihtiyatlı; IMHO'nun benzer bir felsefi vene girdiği yöntem / operatör aşırı yüklemesi, fonksiyon parametreleri için varsayılan değerler vb. içermez. Bu tartışmaya ve diğerlerine bakın: groups.google.com/forum/#!topic/golang-nuts/yn9Q6HhgWi0
Toni Cárdenas

2
Emin değilim ama aldığım panic: runtime error: index out of rangeiçin profiles[len(profiles)-1].UserId, ben dilimin uzunluğu 0 o yüzden panikler olduğunu tahmin?
tom10271

@ tom10271 Evet, böyle bir öğe yoksa, bir dilimin son öğesini alamazsınız. hiç unsur yoksa.
Toni Cárdenas

-10

Biraz daha zarif ama aynı zamanda şunları da yapabilir:

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

3
Bu aynıdır sl[len(sl)-1:], ancak bu yalnızca son öğeden ziyade son öğeyi içeren bir dilim döndürür . play.golang.org/p/kcThrqa-64c
Victor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.