提取切片最后一个元素的 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 许可协议
提取切片最后一个元素的 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 许可协议
如果您可以使用 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 许可协议
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
5 回答2.2k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答889 阅读✓ 已解决
2 回答2.2k 阅读
仅读取切片的最后一个元素:
删除它:
请参阅 有关切片技巧的页面