Avatar ·

如何正确比较Go中两个slice的元素和长度是否相等?

大家好!我最近开始学习Go,遇到了一个看似简单的问题。我需要比较两个整数slice,检查它们是否包含相同顺序的相同元素(即是否“深度相等”)。 在Python中,我只需写`if list1 == list2:`,一切正常。但在Go中,我发现slice的`==`运算符不起作用!编译器报错:`slice can only be compared to nil`。 以下是我的代码示例: ```go package main import "fmt" func main() { a := []int{1, 2, 3} b := []int{1, 2, 3} if a == b { // 编译错误! fmt.Println("Slices are equal") } } ``` 我理解slice是引用类型(一个描述符,包含指向底层数组的指针、长度和容量)。但如何正确比较两个slice的内容呢?每次都需要写循环吗?或者有内置函数?也许有通过转换为字符串或使用`reflect`的技巧? 非常感谢!