Я работал над метапрограммированием с использованием пакетов, и я столкнулся с ошибкой constant 9223372036854775807 overflows int
при появлении math.MaxInt64
и math.MaxUint64
.Go - math.MaxInt64 и ошибка ввода типа
Я изолировав его в двух случаях:
Действительно
var a int64 = math.MaxInt64
b := interface{}(int64(math.MaxInt64))
Не действует
a := math.MaxInt64
b := interface{}(math.MaxInt64)
https://play.golang.org/p/U1QDmFbV29
Похоже, что Go не делает правильный тип умозаключение.
Является ли это ошибкой или ожидаемым поведением? И если вы ожидаете, кто-нибудь знает, почему?
Возможно, это связано с тем, что вы используете Go в 32-разрядной среде. На 64-битной машине оба выражения прекрасны. –
Не это. Обе ОС и Go - 64 бит. –
вы уверены? Что означает 'go env GOARCH'? – JimB