如何在 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
广告