如何在Go中获取切片的最后一个元素?是否有内置函数?
你好!我刚从Python开始学习Go,遇到了切片的问题。在Python中,我习惯通过 `my_list[-1]` 获取列表的最后一个元素,但在Go中这种语法不起作用——编译器会报错 "invalid slice index -1"。
我尝试过写类似 `arr[len(arr) - 1]` 的代码,但这看起来很笨重,而且老实说,我不确定这是否正确。例如,如果切片是空的会怎样?我有过这样的代码:
```go
package main
import "fmt"
func main() {
fruits := []string{"apple", "banana", "cherry"}
// 如何获取 "cherry"?
fmt.Println(fruits[-1]) // 错误!
fmt.Println(fruits[len(fruits)-1]) // 能工作吗?
}
```
但我担心如果切片是空的,那么 `len(fruits) - 1` 会得到 -1,程序会崩溃并引发 panic。Go中是否有像 `last()` 这样的内置函数,或者某种惯用的安全获取最后一个元素的方法?还是每次都需要写检查切片长度的代码?请告诉我正确的方法!