¿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