Próbowałem:Jak mogę wydrukować stałą wartość uint64 w Go przy użyciu polecenia fmt?
fmt.Printf ("% d", math.MaxUint64)
ale mam następujący komunikat o błędzie:
stałe 18446744073709551615 przelewa int
Jak mogę to naprawić? Dzięki!
Próbowałem:Jak mogę wydrukować stałą wartość uint64 w Go przy użyciu polecenia fmt?
fmt.Printf ("% d", math.MaxUint64)
ale mam następujący komunikat o błędzie:
stałe 18446744073709551615 przelewa int
Jak mogę to naprawić? Dzięki!
math.MaxUint64
jest stałą, a nie int64. Zamiast tego spróbuj:
fmt.Printf("%d", uint64(num))
Problem polega na tym, że stała jest nietknięta. Stała przyjmuje typ zależny od kontekstu, w którym jest używany. W tym przypadku jest on używany jako interfejs {}, więc kompilator nie ma możliwości sprawdzenia, jakiego konkretnego typu użyć. W przypadku stałych całkowitych przyjmuje wartość domyślną int
. Ponieważ twoje stałe przepełnienie jest int, jest to błąd czasu kompilacji. Przekazując uint64(num)
, informujesz kompilator, którego wartość ma być traktowana jako uint64
.
Należy zauważyć, że ta konkretna stała zmieści się tylko w uint64, a czasami w uint. Jest nawet większy niż standardowe int64.
Wygląda na to, że próbujesz przechowywać zbyt dużą liczbę w zmiennej typu "int". Zamiast tego użyj 'uint64'. –
Moje przeprosiny, ale popełniłem błąd podczas pisania pytania. Zaktualizowałem go, aby odzwierciedlić to, co miałem na myśli. – abw333