Разница между == и === в Go
Всем привет! Я изучаю Go после JavaScript и столкнулся с непониманием операторов сравнения. В JS есть строгое (===) и нестрогое (==) сравнение, а в Go я вижу только ==. Правильно ли я понимаю, что в Go нет оператора ===? И если его нет, то как работает сравнение для разных типов?
Пробовал написать такой код:
package main
import "fmt"
func main() {
var a int = 5
var b float64 = 5.0
fmt.Println(a == b) // Ошибка компиляции: mismatched types int and float64
}Ожидал, что Go либо приведёт типы (как нестрогое сравнение в JS), либо выдаст ошибку. Получил ошибку компиляции. То есть в Go вообще нельзя сравнить int и float64 напрямую? Нужно всегда явно приводить типы? А что насчёт сравнения структур или указателей? Есть ли случаи, когда == ведёт себя как нестрогое сравнение?
Подскажите, пожалуйста, как правильно сравнивать значения в Go и почему разработчики языка отказались от строгого/нестрогого разделения. Спасибо!