如何获得切片的最后一个元素?


166

提取切片的最后一个元素的Go方法是什么?

var slice []int

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

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

上面的解决方案有效,但看起来很尴尬。

Answers:


295

仅读取切片的最后一个元素:

sl[len(sl)-1]

要删除它:

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

参见此页面有关切片技巧


34
谢谢一群!即使看起来确实很傻,他们也没有添加-1Python拥有的索引...
Morgan Wilde 2014年

3
我确实喜欢-1Python中的,尽管它经常会导致难以调试的错误。
weberc2 2014年

11
他们有意识地把它留在外面。它不明显,容易出错。总体而言,人们对“太多意义”持谨慎态度;它也不具有方法/操作符重载,函数参数的默认值等功能,恕我直言,这与类似的哲学思路相同。看到这个讨论及其他:groups.google.com/forum/#!topic/golang-nuts/yn9Q6HhgWi0
托尼·卡德纳斯

2
我不知道,但我得到panic: runtime error: index out of rangeprofiles[len(profiles)-1].UserId,我猜片的长度为0,因此恐慌?
tom10271 '19

@ tom10271是的,如果没有这样的元素,则无法获得切片的最后一个元素。如果根本没有任何元素。
ToniCárdenas19年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.