Сайт работает в тестовом режиме - все замечания, предложения и информацию о найденных ошибках направляйте, пожалуйста, в Telegram-группу
Курс в процессе наполнения. Полный курс доступен на Степике

Баг: Сравнение разных типов

В некоторых языках 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 типы никогда не приводятся неявно. Хочешь сравнить - приведи сам.

Загрузка...