如何比较两个结构体、切片或映射(map)在Go中是否相等?
大家好!我刚开始学习Go,在比较复杂数据类型时遇到了问题。我尝试比较两个结构体、两个切片和两个映射(map),但得到了意外的结果。
以下是无法正常工作的示例代码:
```go
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
// 比较结构体
p1 := Person{Name: "Alice", Age: 30}
p2 := Person{Name: "Alice", Age: 30}
fmt.Println("结构体相等?", p1 == p2) // 输出 true,但并非总是如此
// 比较切片
slice1 := []int{1, 2, 3}
slice2 := []int{1, 2, 3}
// fmt.Println(slice1 == slice2) // 编译错误:slice can only be compared to nil
// 比较映射
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
// fmt.Println(map1 == map2) // 编译错误:map can only be compared to nil
}
```
我知道对于切片和映射,`==` 运算符无法使用。