Golang 如何比较slice、结构体和Map

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

输出

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

true
Go

比较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

输出

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

true
Go

比较结构体

例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

输出

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

true
Go

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册