Предполагая следующее:
package main
import (
"fmt"
)
func main() {
var MaxInt uint64
MaxInt = 1<<64 - 1
fmt.Printf("Type: %T Value: %v\n", MaxInt, MaxInt)
}
Я получаю результаты:
Type: uint64 Value: 18446744073709551615
Так же, как и ожидалось.
Однако, скажем, я хочу получить больше, скажем, 1<<256 - 1
, когда я использую
func main() {
x:= 1<<256-1
fmt.Printf("Type: %T Value: %v\n", x, x)
}
Я получаю:
./prog.go:10:10: constant 115792089237316195423570985008687907853269984665640564039457584007913129639936 overflows int
Для x:=1<<512-1
Я получаю:
./prog.go:10:10: shift count too large: 512
У меня вопрос: какие типы я могу использовать для игры с большими числами в этом масштабе?