Go语言教程之边写边学:Golang中的反射:Reflect包的DeepEqual函数
无论x和y是否"深度相等",DeepEqual都返回True或False。当数组值的相应元素深度相等时,数组值深度相等。如果结构值的对应字段(导出和未导出)非常相等,则它们非常相等。切片值在以下情况下非常相等(它们都是nil或都是非nil,它们具有相同的长度,并且它们指向同一基础数组的相同初始条目)。
示例代码:
package main
import (
"fmt"
"reflect"
)
type mobile struct {
price float64
color string
}
func main() {
// DeepEqual is used to check two slices are equal or not
s1 := []string{"A", "B", "C", "D", "E"}
s2 := []string{"D", "E", "F"}
result := reflect.DeepEqual(s1, s2)
fmt.Println(result)
// DeepEqual is used to check two arrays are equal or not
n1 := [5]int{1, 2, 3, 4, 5}
n2 := [5]int{1, 2, 3, 4, 5}
result = reflect.DeepEqual(n1, n2)
fmt.Println(result)
// DeepEqual is used to check two structures are equal or not
m1 := mobile{500.50, "red"}
m2 := mobile{400.50, "black"}
result = reflect.DeepEqual(m1, m2)
fmt.Println(result)
}
输出:
false
true
false
系列文章