Avatar ·

如何在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()` 这样的内置函数,或者某种惯用的安全获取最后一个元素的方法?还是每次都需要写检查切片长度的代码?请告诉我正确的方法!