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

Баг: Игнорирование того, что `ParseInt` возвращает `int64`, а не `int`

Что делают:

var x int = 42
x, _ = strconv.ParseInt("100", 10, 64) // ошибка: нельзя присвоить int64 к int без приведения

Почему:
ParseInt всегда возвращает int64, даже если запрошен bitSize меньше 64. Это сделано для единообразия. На 32-битных платформах int - 32 бита, поэтому присваивать int64 напрямую нельзя.

Как правильно:

val64, _ := strconv.ParseInt("100", 10, 32)
val32 := int32(val64)   // безопасно, если число влезает в int32
// или сразу работать с int64
var x int64 = val64

Альтернатива: Использовать strconv.Atoi, который возвращает int (зависит от платформы), но только для десятичных чисел.

Загрузка...