2013-05-10 45 views
8

我嘗試:如何使用fmt打印出Go中的常量uint64?

fmt.Printf( 「%d」,math.MaxUint64)

但我得到以下錯誤消息:

恆定18446744073709551615溢出詮釋

我該如何解決這個問題?謝謝!

+1

在我看來,你試圖在一個變量類型爲「int」中存儲過大的數字。改用'uint64'。 – 2013-05-10 03:47:57

+0

我很抱歉,但是在寫這個問題時我犯了一個錯誤。我更新了它以反映我的意思。 – abw333 2013-05-10 04:34:48

回答

20

math.MaxUint64是一個常量,而不是一個int64。嘗試改爲:

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

這裏的問題是該常量是無類型的。常量將根據使用它的上下文而採用一種類型。在這種情況下,它被用作接口{},因此編譯器無法知道要使用的具體類型。對於整數常量,它默認爲int。由於你的常量溢出一個int,這是一個編譯時錯誤。通過傳遞uint64(num),即表示您希望編譯器將該值視爲uint64

請注意,這個特定的常量只適用於uint64,有時也適用於uint。它甚至比標準的int64還要大。