如何在 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP