
Баг: Игнорирование того, что `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 (зависит от платформы), но только для десятичных чисел.
Загрузка...