Comparación de estructuras

¿Cómo comparar dos estructuras en Go?

Debido a que las estructuras están compuestas por diferentes tipos de campos, en el caso de la comparación, lo que se plantea es determinar si 2 variables son del mismo tipo de estructura con los mismos valores asignados.

Para verificar la igualdad entre 2 estructuras, se utiliza el operador de igualdad == o de diferencia en el caso contrario !=.

Ejemplo de comparación entre estructuras en Go

Supongamos que tenemos una estructura para un automóvil

type Auto struct {
    Marca    string
    Submarca string
    Modelo   int
    Color    string
}

Y tres instancias de la estructura.

auto1 := Auto{
    Marca:    "Toyota",
    Submarca: "Prius",
    Modelo:   2015,
    Color:    "blanco",
}
auto2 := Auto{
    Marca:    "Toyota",
    Submarca: "Corolla",
    Modelo:   2017,
    Color:    "cafe",
}
auto3 := Auto{
    Marca:    "Toyota",
    Submarca: "Prius",
    Modelo:   2015,
    Color:    "blanco",
}

Descripción del ejemplo de comparación entre estructuras en Go

Como podemos ver, la estructura auto1 y auto2 son diferentes, pero auto1 y auto3 es igual. Podemos hacer la comprobación.

if auto1 != auto2 {
    fmt.Println("Auto 1 y 2 son diferentes")
}
if auto1 == auto3 {
    fmt.Println("Auto 1 y 3 son iguales")
}

Podemos comprobar lo anterior con la salida del código.

Auto 1 y 2 son diferentes
Auto 1 y 3 son iguales

No es posible realizar comparaciones entre diferentes tipos, si se intenta realizar esta operación el compilador generarara un error en tiempo de ejecución. Por lo que se recomienda utilizar reflect.TypeOf(estructura) para verificar que sean del mismo tipo