Structure Equality in Golang

A structure or struct in Golang is a user-defined type, which allows us to create a group of elements of different types into a single unit. Any real-world entity which has some set of properties or fields can be represented as a struct. This concept is generally compared with the classes in object-oriented programming. It can be termed as a lightweight class which does not support inheritance but supports composition.
In Go language, you are allowed to compare two structures if they are of the same type and contain the same fields values with the help of == operator or DeeplyEqual() Method. Both the operator and method return true if the structures are identically equal(in terms of their fields values) to each other, otherwise, return false. And, if the compared variables belong to different structures, then the compiler will give an error. Let us discuss this concept with the help of the examples:

Note: The DeeplyEqual() method is defined under “reflect” package.

Example 1:



filter_none

edit
close

play_arrow

link
brightness_4
code

// Go program to illustrate the
// concept of struct equality
// using == operator
  
package main
  
import "fmt"
  
// Creating a structure
type Author struct {
    name      string
    branch    string
    language  string
    Particles int
}
  
// Main function
func main() {
  
    // Creating variables
    // of Author structure
    a1 := Author{
        name:      "Moana",
        branch:    "CSE",
        language:  "Python",
        Particles: 38,
    }
  
    a2 := Author{
        name:      "Moana",
        branch:    "CSE",
        language:  "Python",
        Particles: 38,
    }
  
    a3 := Author{
        name:      "Dona",
        branch:    "CSE",
        language:  "Python",
        Particles: 38,
    }
  
    // Checking if a1 is equal
    // to a2 or not
    // Using == operator
    if a1 == a2 {
      
        fmt.Println("Variable a1 is equal to variable a2")
          
    } else {
      
        fmt.Println("Variable a1 is not equal to variable a2")
    }
  
    // Checking if a1 is equal
    // to a2 or not
    // Using == operator
    if a2 == a3 {
      
        fmt.Println("Variable a2 is equal to variable a3")
          
    } else {
      
        fmt.Println("Variable a2 is not equal to variable a3")
    }
}

chevron_right


Output:

Variable a1 is equal to variable a2
Variable a2 is not equal to variable a3

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// Go program to illustrate the
// concept of struct equality
// using DeepEqual() method
package main
  
import (
    "fmt"
    "reflect"
)
  
// Creating a structure
type Author struct {
    name      string
    branch    string
    language  string
    Particles int
}
  
// Main function
func main() {
  
    // Creating variables 
    // of Author structure
    a1 := Author{
        name:      "Soana",
        branch:    "CSE",
        language:  "Perl",
        Particles: 48,
    }
  
    a2 := Author{
        name:      "Soana",
        branch:    "CSE",
        language:  "Perl",
        Particles: 48,
    }
  
    a3 := Author{
        name:      "Dia",
        branch:    "CSE",
        language:  "Perl",
        Particles: 48,
    }
      
    // Compairing a1 with a2
    // Using DeepEqual() method
    fmt.Println("Is a1 equal to a2: ", reflect.DeepEqual(a1, a2))
  
    // Compairing a2 with a3
    // Using DeepEqual() method
    fmt.Println("Is a2 equal to a3: ", reflect.DeepEqual(a2, a3))
}

chevron_right


Output:

Is a1 equal to a2:  true
Is a2 equal to a3:  false


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.