슬라이스의 마지막 요소를 얻는 방법?


167

슬라이스의 마지막 요소를 추출하는 이동 방법은 무엇입니까?

var slice []int

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

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

위의 해결책은 효과가 있지만 어색해 보입니다.

답변:


297

슬라이스의 마지막 요소를 읽는 경우 :

sl[len(sl)-1]

그것을 제거하기 위해 :

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

슬라이스 트릭에 대한페이지를 참조하십시오


34
무리 감사! 어리석은 것처럼 보이지만 -1파이썬이 가지고 있는 색인을 추가하지 않았습니다 .
Morgan Wilde

3
나는 -1종종 파이썬에서 좋아 하지만 디버그하기 어려운 오류가 발생합니다.
weberc2

11
그들은 의식적으로 그것을 외부에 두었습니다. 명확하지 않으며 오류가 발생하기 쉽습니다. 전체적으로 가기는 '너무 많은 의미'에 대한 관심입니다. 또한 IMHO가 비슷한 철학적 맥락에서 사용하는 방법 / 운영자 과부하, 함수 매개 변수의 기본값 등을 제공하지 않습니다. 토론 및 기타 내용보기 : groups.google.com/forum/#!topic/golang-nuts/yn9Q6HhgWi0
Toni Cárdenas

2
나는 확실하지 않다 그러나 나는 얻었다 panic: runtime error: index out of range을 위해 profiles[len(profiles)-1].UserId, 나는 조각의 길이가 0이 너무 패닉 추측?
tom10271

@ tom10271 예, 슬라이스가 없으면 슬라이스의 마지막 요소를 얻을 수 없습니다. 요소가 전혀 없다면.
Toni Cárdenas

-10

조금 우아하지만 할 수있는 일 :

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

3
와 동일 sl[len(sl)-1:]하지만 마지막 요소가 아닌 마지막 요소가 포함 된 슬라이스 를 반환합니다 . play.golang.org/p/kcThrqa-64c
Victor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.