Golang 如何比较slice、结构体和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
比较结构体
例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