C語言中文網 目錄

Go語言整型(整數類型)

Go 語言中有豐富的數據類型,除了基本的整型、浮點型、布爾型、字符串外,還有切片、結構體、函數、map、通道(channel)等。Go 語言的基本類型和其他語言大同小異,切片類型有著指針的便利性,但比指針更為安全,很多高級語言都配有切片進行安全和高效率的內存操作。

本節我們將介紹最基本的整型。

整型分為以下兩個大類:
  • 按長度分為:int8、int16、int32、int64
  • 還有對應的無符號整型:uint8、uint16、uint32、uint64

其中,uint8 就是我們熟知的 byte 型,int16 對應C語言中的 short 型,int64 對應C語言中的 long 型。

自動匹配平臺的 int 和 uint

Go 語言也有自動匹配特定平臺整型長度的類型—— int 和 uint。

可以跨平臺的編程語言可以運行在多種平臺上。平臺的字節長度是有差異的。64 位平臺現今已經較為普及,但 8 位、16 位、32 位的操作系統依舊存在。16 位平臺上依然可以使用 64 位的變量,但運行性能和內存性能上較差。同理,在 64 位平臺上大量使用 8 位、16 位等與平臺位數不等長的變量時,編譯器也是盡量將內存對齊以獲得最好的性能。

不能正確匹配平臺字節長度的程序就類似于用轎車運一頭牛和用一輛卡車運送一頭牛的情形一樣。

在使用 int 和 uint 類型時,不能假定它是 32 位或 64 位的整型,而是考慮 int 和 uint 可能在不同平臺上的差異。

哪些情況下使用 int 和 uint

邏輯對整型范圍沒有特殊需求。例如,對象的長度使用內建 len() 函數返回,這個長度可以根據不同平臺的字節長度進行變化。實際使用中,切片或 map 的元素數量等都可以用 int 來表示。

反之,在二進制傳輸、讀寫文件的結構描述時,為了保持文件的結構不會受到不同編譯目標平臺字節長度的影響,不要使用 int 和 uint。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo