3 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
Go有兩種類型:
依賴于體系結(jié)構(gòu)的類型, 例如
int
,uint
,uintptr
。和體系結(jié)構(gòu)無關(guān)的類型如
int32
,int64
等
依賴于體系結(jié)構(gòu)的類型對(duì)于運(yùn)行程序的機(jī)器具有適當(dāng)?shù)拈L(zhǎng)度:
an
int
是默認(rèn)的有符號(hào)類型:在 32 位機(jī)器上需要 32 位(4 字節(jié)),在 64 位機(jī)器上需要 64 位(8 字節(jié));unsigned 也是如此uint
。uintptr
是一個(gè)足以存儲(chǔ)指針值的無符號(hào)整數(shù)。
與體系結(jié)構(gòu)無關(guān)的類型具有由其名稱指示的固定大小(以位為單位):
對(duì)于整數(shù),范圍是:
int8 (-128 -> 127)
int16 (-32768 -> 32767)
int32 (? 2,147,483,648 -> 2,147,483,647)
int64 (? 9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)
對(duì)于無符號(hào)整數(shù):
uint8 (with alias byte, 0 -> 255)
uint16 (0 -> 65,535)
uint32 (0 -> 4,294,967,295)
uint64 (0 -> 18,446,744,073,709,551,615)
對(duì)于花車:
float32 (+- 1O-45 -> +- 3.4 * 1038 )
(IEEE-754) float64 (+- 5 * 10-324 -> 1.7 * 10308 )
int是提供最快處理速度的整數(shù)類型。整數(shù)的初始(默認(rèn))值為0,對(duì)于浮點(diǎn)數(shù),這是0.0 一個(gè) float32 可靠地精確到大約 7 個(gè)小數(shù)位,一個(gè) float64 精確到大約 15 個(gè)小數(shù)位。
由于浮點(diǎn)數(shù)不可能達(dá)到完美的準(zhǔn)確性,==或者!=必須非常小心地進(jìn)行比較!

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
為什么 Go 有幾種不同的類型?處理不同類型/種類的數(shù)據(jù)。
為什么 Go 有幾種不同的整數(shù)類型?處理不同類型/種類的整數(shù)數(shù)據(jù)。
還有更多你沒有列出的:
byte alias for uint8
rune alias for int32
有符號(hào)和無符號(hào)之間的區(qū)別非常明顯。在 Java 中沒有無符號(hào)整數(shù),我發(fā)現(xiàn)它比擁有額外的類型更令人困惑,并且可以方便地選擇。在 Java 中編寫與發(fā)送/接收無符號(hào)整數(shù)數(shù)據(jù)的其他系統(tǒng)互操作的應(yīng)用程序很煩人。
關(guān)于位大小,您可以方便地選擇最適合您的內(nèi)存需求(或內(nèi)存嚴(yán)格性)并限制變量表示的值的可能范圍。不會(huì)增加語(yǔ)言或程序的復(fù)雜性。
選擇整數(shù)變量位大小的“調(diào)色板”并沒有用盡,大多數(shù)其他語(yǔ)言提供相同范圍的整數(shù)類型。如果排除符號(hào),則 Java 基本上具有相同的數(shù)量:
Java Go
-------------------------
byte => int8
short => int16
int => int32
long => int64

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
C99 語(yǔ)言具有類似的分類 thru <stdint.h>(而 C 更細(xì)粒度,具有類似 的類型int_fast32_t);擁有這么多的整數(shù)類型對(duì)于可移植性和效率很有用。
與 C99 和 C++ 的兼容性可能足以成為 Go 擁有這些類型的理由。
您可能想要編寫可以在嵌入式微控制器、平板電腦(32 位 ARM)、廉價(jià)筆記本電腦(32 位 x86)、更大的臺(tái)式機(jī)(64 位 x86-64)、服務(wù)器(也許還有 PowerPC 或 64 位AARCH64 ARM)上高效運(yùn)行的代碼等等...而且您在某些操作系統(tǒng)上有各種編程模型或ABI(例如,我的 Linux 桌面上的x86、x32、amd64)。
在各種架構(gòu)上,積分運(yùn)算的成本可能會(huì)有很大差異。在某些機(jī)器上,添加 anint可能比添加C long(或int64來自Go 的an )成本更高。在其他機(jī)器上(可能是大多數(shù)機(jī)器),情況可能正好相反。和CPU緩存的考慮可能問題很多WRT性能。在某些情況下(例如,如果您有十億大小的數(shù)組)數(shù)據(jù)大小很重要。最后,對(duì)于來自外部的二進(jìn)制數(shù)據(jù),大小、布局、對(duì)齊和字節(jié)順序很重要。閱讀有關(guān)序列化的信息。
- 3 回答
- 0 關(guān)注
- 226 瀏覽
添加回答
舉報(bào)