Golang reflect.DeepEqual()函数及示例
Go语言提供了内置支持运行时反射的实现,借助反射包使程序能够操作任意类型的对象。Golang中的 reflect.DeepEqual() 函数用于检查x和y是否“深度相等”。要访问此函数,需要在程序中导入反射包。
语法:
func DeepEqual(x,y interface{}) bool
参数: 此函数使用两个带有任意类型的参数,即x和y。
返回值: 此函数返回布尔值。
下面的示例说明了在Golang中使用以上方法的用法:
示例1:
// Golang程序示例
// reflect.DeepEqual() 函数
package main
import (
"fmt"
"reflect"
)
// 主函数
func main() {
map_1 := map[int]string{
200: "Anita",
201: "Neha",
203: "Suman",
204: "Robin",
205: "Rohit",
}
map_2 := map[int]string{
200: "Anita",
201: "Neha",
203: "Suman",
204: "Robin",
205: "Rohit",
}
// DeepEqual用于检查两个接口是否相等
res1 := reflect.DeepEqual(map_1, map_2)
fmt.Println("Map1是否等于Map2: ", res1)
}
输出:
Map1是否等于Map2: true
示例2:
// Golang程序示例
// reflect.DeepEqual() 函数
package main
import (
"fmt"
"reflect"
)
// 主函数
func main() {
src := reflect.ValueOf([]int{10, 20, 32})
dest := reflect.ValueOf([]int{1, 2, 3})
cnt := reflect.Copy(dest, src)
cnt+=1
// DeepEqual用于检查两个接口是否相等
res1 := reflect.DeepEqual(src, dest )
fmt.Println("dest是否等于src: ", res1)
}
输出:
dest是否等于src: false
极客教程