如何在 Golang 中比较 slice、struct 和 map?


Go 中的 reflect 包提供了一个非常重要的函数,称为 DeepEqual(),可用于比较复合类型。当我们要检查两个数据类型是否“深度相等”时,将使用 DeepEqual() 函数。

比较 slice

示例 1

考虑下面所示的代码

package main
import (
   "fmt"
   "reflect"
)
func main() {
   sl := []int{1, 2, 3}
   sl1 := []int{1, 2, 3}
   fmt.Println(reflect.DeepEqual(sl, sl1))
}

输出

如果我们在上述代码上运行命令 go run main.go,那么我们将在终端中获得以下输出。

true

比较 map

示例 2

考虑下面所示的代码。

package main
import (
   "fmt"
   "reflect"
)
func main() {
   m1 := make(map[string]int)
   m1["rahul"] = 10
   m1["mukul"] = 11
   m2 := make(map[string]int)
   m2["rahul"] = 10
   m2["mukul"] = 11
   fmt.Println(reflect.DeepEqual(m1, m2))
}

输出

如果我们在上述代码上运行命令 go run main.go,那么我们将在终端中获得以下输出。

true

比较 struct

示例 3

考虑下面所示的代码。

package main
import (
   "fmt"
   "reflect"
)
type Person struct {
   name string
   age int
}
func main() {
   p1 := Person{name: "TutorialsPoint", age: 10}
   p2 := Person{name: "TutorialsPoint", age: 10}
   fmt.Println(reflect.DeepEqual(p1, p2))
}

输出

如果我们在上述代码上运行命令 go run main.go,那么我们将在终端中获得以下输出。

true

更新于: 2022-02-21

1K+ 浏览

开启您的职业生涯

完成课程以获得认证

开始
广告