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


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.