2013-05-10 11 views
8

ho provato:Come posso stampare un uint64 costante in Go usando fmt?

fmt.Printf ("% d", math.MaxUint64)

ma ho ottenuto il seguente messaggio di errore:

costanti 18446744073709551615 overflow int

Come posso risolvere questo? Grazie!

+1

Mi sembra che tu stia cercando di memorizzare un numero troppo grande in una variabile "int". Usa invece 'uint64'. –

+0

Le mie scuse, ma ho commesso un errore quando ho scritto la domanda. L'ho aggiornato per riflettere ciò che intendevo. – abw333

risposta

20

math.MaxUint64 è una costante, non una int64. Prova invece:

fmt.Printf("%d", uint64(num)) 

Il problema qui è che la costante non è tipizzata. La costante assumerà un tipo in base al contesto in cui viene utilizzato. In questo caso, viene utilizzato come un'interfaccia {}, quindi il compilatore non ha modo di sapere quale tipo di calcestruzzo si desidera utilizzare. Per le costanti integer, il valore predefinito è int. Dal momento che la costante trabocca di un int, questo è un errore di compilazione. Passando allo uint64(num), si informa il compilatore che si desidera che il valore venga considerato come uint64.

Si noti che questa particolare costante si adatta solo a un uint64 ea volte a un uint. È persino più grande di un int64 standard.

Problemi correlati