什么是__CODE__
用于提取的最后一个元素的方式__CODE__
?
var slice []int
slice = append(slice, 2)
slice = append(slice, 7)
slice[len(slice)-1:][0] // Retrieves the last element
Run Code Online (Sandbox Code Playgroud)
上面的解决方案有效,但似乎很尴尬.
Ton*_*nas 266
只需读取切片的最后一个元素:
sl[len(sl)-1]
Run Code Online (Sandbox Code Playgroud)
要删除它:
sl = sl[:len(sl)-1]
Run Code Online (Sandbox Code Playgroud)
如果您可以使用 Go 1.18 或更高版本,并且经常需要访问某些任意元素类型的切片的最后一个元素,那么使用小型自定义函数可以提高调用站点的可读性。另请参阅Roger Peppe 的Generics Unconstrained演讲,其中他描述了一个类似的函数来获取切片的第一个元素(如果有)。
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
}
Run Code Online (Sandbox Code Playgroud)
(游乐场)
不过,无需为该功能创建库Last
;一点点复制胜过一点点依赖。
您可以使用该len(arr)
函数,尽管它将返回从 1 开始的切片的长度,并且由于 Go 数组/切片从索引 0 开始,最后一个元素实际上是len(arr)-1
例子:
arr := []int{1,2,3,4,5,6} // 6 elements, last element at index 5
fmt.Println(len(arr)) // 6
fmt.Println(len(arr)-1) // 5
fmt.Println(arr[len(arr)-1]) // 6 <- element at index 5 (last element)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
109222 次 |
最近记录: |