How to compare equality of struct, slice and map?
DeepEqual function from reflect package used to check x and y are “deeply equal”. This applies for : Array values are deeply equal when their corresponding elements are deeply equal. Struct values are deeply equal if their corresponding fields, both exported and unexported, are deeply equal. Below is a short program to compare struct, slice or map are equal or not.
Example
package main
import (
"fmt"
"reflect"
)
type testStruct struct {
A int
B string
C []int
}
func main() {
st1 := testStruct{A:100,B:"Australia",C:[]int{1,2,3}}
st2 := testStruct{A:100,B:"Australia",C:[]int{1,2,3}}
fmt.Println("Struct equal: ", reflect.DeepEqual(st1, st2))
slice1 := []int{1,2,3,4}
slice2 := []int{1,2,3,4}
fmt.Println("Slice equal: ", reflect.DeepEqual(slice1, slice2))
map1 := map[string]int{
"x":1,
"y":2,
}
map2 := map[string]int{
"x":1,
"y":2,
"z":3,
}
fmt.Println("Map equal: ",reflect.DeepEqual(map1, map2))
}
Output
Struct equal: true
Slice equal: true
Map equal: false
Most Helpful This Week
How to iterate over an Array using for loop?
How to kill execution of goroutine?
How to blur an image in Golang?
Regular expression to validate the date format in "dd/mm/yyyy"
Get Year, Month, Day, Hour, Min and Second from a specified date
Find out how many logical processors used by current process