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

新手上路,请多包涵

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

 var slice []int

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

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

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

原文由 Morgan Wilde 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.4k
2 个回答

如果您可以使用 Go 1.18 或更高版本并且您经常需要访问某个任意元素类型的切片的最后一个元素,那么使用一个小的自定义函数可以提高调用站点的可读性。另请参阅 Roger Peppe 的 Generics Unconstrained talk ,他在其中描述了一个类似的函数来获取切片的第一个元素(如果有的话)。

 package main

import "fmt"

func Last[E any](s []E) (E, bool) {
    if len(s) == 0 {
        var zero E
        return zero, false
    }
    return s[len(s)-1], true
}

func main() {
    var numbers []int
    fmt.Println(Last(numbers)) // 0 false
    numbers = []int{4, 8, 15, 16, 23, 42}
    fmt.Println(Last(numbers)) // 42 true
}

游乐场

不过,无需为该 Last 函数创建一个库; 一点点复制胜过一点点依赖

原文由 jub0bs 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题