Avatar ·

Diferencia entre == y === en Go

¡Hola a todos! Estoy aprendiendo Go después de JavaScript y me encontré con una falta de comprensión sobre los operadores de comparación. En JS hay comparación estricta (===) y no estricta (==), mientras que en Go solo veo ==. ¿Entiendo correctamente que en Go no existe el operador ===? Y si no existe, ¿cómo funciona la comparación para diferentes tipos?

Intenté escribir este código:

package main\n\nimport "fmt"\n\nfunc main() {\n    var a int = 5\n    var b float64 = 5.0\n    fmt.Println(a == b) // Error de compilación: mismatched types int and float64\n}

Esperaba que Go o bien hiciera conversión de tipos (como la comparación no estricta en JS), o diera un error. Obtuve un error de compilación. ¿Entonces en Go no se puede comparar directamente int y float64? ¿Siempre hay que hacer conversión explícita?