2017-02-17 14 views
3

Golang中有int, int32, int64爲什麼在Go中存在int類型

int32 has 32 bits, 
int64 has 64 bits, 
int has 32 or 64 or different number of bits according to the environment. 

我覺得int32int64將是完全足夠了該計劃。 我不知道爲什麼int類型應該存在,是不是會讓我們的代碼更難以預測?

而且還在C++中,類型int和類型long具有不確定的長度。我認爲這會讓我們的計劃變得脆弱。我很困惑。

回答

4

通常尺寸爲int等於目標的自然字大小。所以如果你的程序不關心int(最小int範圍就足夠了)的大小,它可以在各種編譯器上表現最好。

當你需要一個特定的大小,你當然可以用int32

4

通常每個平臺上運行最好的整型其本土的大小。

通過使用簡單的int你說你的編譯器,你並不真正關心使用什麼位寬,而是讓他選擇一個最快的工作。請注意,你總是希望寫你的代碼,以便它是獨立於平臺儘可能...

在另一方面int32/int64類型是有用的,如果你需要的整數爲特定的大小。這可能是有用的f.e.如果你想保存二進制文件(不要忘記endiannes)。或者如果你有大量的整數(只能達到32b值),那麼節省一半的內存將是顯着的,等等。

0

在Go版本1.0中,int只是int32的同義詞 - 一個32位整數。由於int用於索引切片,因此這會阻止切片具有超過20億個元素左右。

在Go 1.1中,int was made 64 bits long on 64-bit platforms,因此足夠大以索引適合主內存的任何片。因此:

  • int32是32位整數的類型;
  • int64是64位整數的類型;
  • int是可以索引所有可能切片的最小整數類型。

實際上,int是足夠大的大多數實際用途。使用int64僅在處理大於最大可能分片索引的值時才需要,而int32對於在不需要較大範圍時節省內存和減少內存通信很有用。

相關問題