
Баг: Сравнение разных типов
В некоторых языках 5 == "5" вернёт false. В Go - ошибка компиляции.
// ❌ НЕ СКОМПИЛИРУЕТСЯ
var age int = 18
var ageStr string = "18"
fmt.Println(age == ageStr) // mismatched types int and string
// ✅ ПРАВИЛЬНО - привести к одному типу
import "strconv"
ageFromStr, _ := strconv.Atoi(ageStr)
fmt.Println(age == ageFromStr) // trueТо же самое касается разных числовых типов - даже они не сравниваются напрямую:
var a int32 = 5
var b int64 = 5
// fmt.Println(a == b) // mismatched types int32 and int64
// ✅ Явное приведение
fmt.Println(int64(a) == b) // trueПравило: в Go типы никогда не приводятся неявно. Хочешь сравнить - приведи сам.
Загрузка...