Avatar ·

Unterschied zwischen == und === in Go

Hallo zusammen! Ich lerne Go nach JavaScript und bin auf ein Verständnisproblem mit Vergleichsoperatoren gestoßen. In JS gibt es strikten (===) und nicht-strikten (==) Vergleich, aber in Go sehe ich nur ==. Verstehe ich richtig, dass es in Go keinen ===-Operator gibt? Und wenn nicht, wie funktioniert der Vergleich für verschiedene Typen?

Ich habe versucht, diesen Code zu schreiben:

package main\n\nimport "fmt"\n\nfunc main() {\n    var a int = 5\n    var b float64 = 5.0\n    fmt.Println(a == b) // Compiler-Fehler: mismatched types int and float64\n}

Ich habe erwartet, dass Go entweder die Typen konvertiert (wie der nicht-strikte Vergleich in JS) oder einen Fehler ausgibt. Ich habe einen Compiler-Fehler erhalten. Das heißt, in Go kann man int und float64 überhaupt nicht direkt vergleichen? Muss man immer explizit konvertieren?