How to compare slices, structs and maps in Golang?


The reflect package in Go provides a very important function called DeepEqual() which can be used to compare composite types. The DeepEqual() function is used when we want to check if two data types are "deeply equal".

Comparing slices

Example 1

Consider the code shown below

package main
import (
   "fmt"
   "reflect"
)
func main() {
   sl := []int{1, 2, 3}
   sl1 := []int{1, 2, 3}
   fmt.Println(reflect.DeepEqual(sl, sl1))
}

Output

If we run the command go run main.go on the above code, then we will get the following output in the terminal.

true

Comparing maps

Example 2

Consider the code shown below.

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))
}

Output

If we run the command go run main.go on the above code, then we will get the following output in the terminal.

true

Comparing structs

Example 3

Consider the code shown below.

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))
}

Output

If we run the command go run main.go on the above code, then we will get the following output in the terminal.

true

Updated on: 21-Feb-2022

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements