Igualdad estructural en Golang

Una estructura o struct en Golang es un tipo definido por el usuario, lo que nos permite crear un grupo de elementos de diferentes tipos en una sola unidad. Cualquier entidad del mundo real que tenga algún conjunto de propiedades o campos se puede representar como una estructura. Este concepto generalmente se compara con las clases en la programación orientada a objetos. Se puede denominar como una clase ligera que no admite la herencia pero sí la composición. 
En el lenguaje Go, puede comparar dos estructuras si son del mismo tipo y contienen los mismos valores de campo con la ayuda del operador == o el método DeeplyEqual(). Tanto el operador como el método devuelven verdadero si las estructuras son idénticamente iguales (en términos de los valores de sus campos), de lo contrario, devuelven falso. Y, si las variables comparadas pertenecen a estructuras diferentes, el compilador dará un error. Analicemos este concepto con la ayuda de los ejemplos:
Nota: El método DeeplyEqual() se define en el paquete «reflejar».
Ejemplo 1:
 

C

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

Producción: 
 

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

Ejemplo 2:
 

C

// 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,
    }
     
    // Comparing a1 with a2
    // Using DeepEqual() method
    fmt.Println("Is a1 equal to a2: ", reflect.DeepEqual(a1, a2))
 
    // Comparing a2 with a3
    // Using DeepEqual() method
    fmt.Println("Is a2 equal to a3: ", reflect.DeepEqual(a2, a3))
}

Producción:
 

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

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *