Làm thế nào để có được phần tử cuối cùng của một lát?


166

Cách Go để trích xuất phần tử cuối cùng của một lát cắt là gì?

var slice []int

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

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

Các giải pháp trên hoạt động, nhưng có vẻ khó xử.

Câu trả lời:


296

Để chỉ đọc phần tử cuối cùng của một lát:

sl[len(sl)-1]

Để loại bỏ nó:

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

Xem trang này về thủ thuật cắt lát


34
Cảm ơn nhiều! Mặc dù có vẻ ngớ ngẩn, họ đã không thêm -1chỉ mục Python có ...
Morgan Wilde

3
Tôi thích -1từ Python, mặc dù nó thường dẫn đến các lỗi khó gỡ lỗi.
weberc2

11
Họ để nó bên ngoài một cách có ý thức. Nó không rõ ràng và dễ bị lỗi. Nhìn tổng thể là giới hạn về "quá nhiều ý nghĩa"; nó cũng không có tính năng nạp chồng phương thức / toán tử, các giá trị mặc định cho các tham số hàm, v.v. mà IMHO đi trong một mạch triết học tương tự. Xem cuộc thảo luận này và các cuộc thảo luận khác: Groups.google.com.vn/forum/#!topic/golang-nuts/yn9Q6HhgWi0
Toni Cárdenas

2
Tôi không chắc chắn nhưng tôi đã panic: runtime error: index out of rangecho profiles[len(profiles)-1].UserId, tôi đoán chiều dài của lát là 0 nên hoảng loạn?
tom10271

@ tom10271 Có, bạn không thể lấy phần tử cuối cùng của một lát nếu không có phần tử đó, nghĩa là. nếu không có yếu tố nào cả.
Toni Cárdenas

-10

Bit kém thanh lịch nhưng cũng có thể làm được:

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

3
Điều đó giống như sl[len(sl)-1:], nhưng trả về một lát chứa phần tử cuối cùng, thay vì chỉ phần tử cuối cùng. play.golang.org/p/kcThrqa-64c
Victor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.