Avatar ·

如何比较两个结构体、切片或映射(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 } ``` 我知道对于切片和映射,`==` 运算符无法使用。