Avatar ·

Diferença entre == e === em Go

Olá a todos! Estou aprendendo Go depois de JavaScript e me deparei com uma falta de compreensão dos operadores de comparação. Em JS, há comparação estrita (===) e não estrita (==), enquanto em Go vejo apenas ==. Estou correto ao entender que Go não tem o operador ===? E se não tem, como funciona a comparação para tipos diferentes?

Tentei escrever este código:

package main

import "fmt"

func main() {
    var a int = 5
    var b float64 = 5.0
    fmt.Println(a == b) // Erro de compilação: mismatched types int and float64
}

Esperava que Go convertesse os tipos (como a comparação não estrita em JS) ou gerasse um erro. Recebi um erro de compilação. Ou seja, em Go não é possível comparar int e float64 diretamente? É sempre necessário converter os tipos explicitamente? E quanto à comparação de structs ou ponteiros? Existem casos em que == se comporta como comparação não estrita?

Por favor, me digam como comparar valores corretamente em Go e se