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 use function from another file golang?
Different ways to convert Byte Array into String
Get Year, Month, Day, Hour, Min and Second from current date and time.
Example to compare Println vs Printf
How to create a photo gallery in Go?
How to Convert string to integer type in Go?
Find length of Channel, Pointer, Slice, String and Map
Sample program to create csv and write data
Golang import package inside package
How to wait for Goroutines to Finish Execution?