[TOC]
Go語言的數值類型分為以下幾種:`整型`、`浮點數`、`復數`。其中每一種都包含了不同大小的數值類型。例如有符號整數包含`int8`、`int16`、`int32`、`int64`等。每種數值類型都決定了對應的大小范圍和是否支持正負符號。
[TOC]
Go語言同時提供了`有符號`和`無符號`的整型類型。其中包括`int8`、`int16`、`int32`和`int64`四種大小截然不同的符號整數類型,分別對應8、16、32、64bit(二進制位)大小的有符號整數、與此對應的`uint8`、`uint16`、`uint32`和`uint64`四種無符號整數類型。
[TOC]
此外還有兩種整數類型`int`和`uint`,它們分別對應特定CPU平臺的字長(機器字大小),其中`int`表示有符號整數,應用最為廣泛,`uint`表示無符號整數。實際開發中由于編譯器和計算機硬件的不同,`int`和`uint`所能表示的整數大小會在32bit或64bit之間變化。
[TOC]
大多數情況下,我們只需要` int `一種整型即可,它可以用于循環計數器(for 循環中控制循環次數的變量)、數組和切片的索引,以及任何通用目的的整型運算符,通常 int 類型的處理速度也是最快的。
[TOC]
用來表示 Unicode 字符的`rune`類型和`int32`類型是等價的,通常用于表示一個 Unicode 碼點。這兩個名稱可以互換使用。同樣,`byte`和`uint8`也是等價類型,`byte`類型一般用于強調數值是一個原始的數據而不是一個小的整數。
[TOC]
最后,還有一種無符號的整數類型`uintptr`,它沒有指定具體的 bit 大小但是足以容納指針。`uintptr`類型只有在底層編程時才需要,特別是Go語言和C語言函數庫或操作系統接口相交互的地方。
[TOC]
盡管在某些特定的運行環境下 int、uint 和 uintptr 的大小可能相等,但是它們依然是不同的類型,比如 int 和 int32,雖然 int 類型的大小也可能是 32 bit,但是在需要把 int 類型當做 int32 類型使用的時候必須顯示的對類型進行轉換,反之亦然。
[TOC]
Go語言中有符號整數采用 2 的補碼形式表示,也就是最高 bit 位用來表示符號位,一個 n-bit 的有符號數的取值范圍是從 -2(n-1)到 2(n-1)-1。無符號整數的所有 bit 位都用于表示非負數,取值范圍是 0 到 2n-1。例如,int8 類型整數的取值范圍是從 -128 到 127,而 uint8 類型整數的取值范圍是從 0 到 255。
## 哪些情況下使用int和uint
[TOC]
程序邏輯對整型范圍沒有特殊需求。例如,對象的長度使用內建 len() 函數返回,這個長度可以根據不同平臺的字節長度進行變化。實際使用中,切片或 map 的元素數量等都可以用 int 來表示。
[TOC]
反之,在二進制傳輸、讀寫文件的結構描述時,為了保持文件的結構不會受到不同編譯目標平臺字節長度的影響,不要使用 int 和 uint。
- 1.Go語言前景
- 2.Go語言環境搭建
- 3.Go語言的基本語法
- 3.1變量
- 3.1.1變量聲明
- 3.1.2變量初始化
- 3.1.3多個變量同時賦值
- 3.1.4匿名變量
- 3.1.5變量的作用域
- 3.1.6整型
- 3.1.7浮點類型
- 3.1.8復數
- 3.1.9bool類型
- 3.1.10字符串
- 3.1.11字符類型
- 3.1.12類型轉換
- 3.2常量
- 3.1.1const關鍵字
- 3.2.2模擬枚舉
- 4.Go語言的流程控制
- 4.2循環結構
- 4.3鍵值循環
- 4.4switch語句
- 4.5goto語句
- 4.6break語句
- 4.7continue語句
- 5.Go語言的函數
- 5.1函數聲明
- 5.2函數變量
- 5.3函數類型實現接口
- 5.4閉包
- 5.5可變參數
- 5.6defer(延遲執行語句)
- 5.7處理運行時錯誤
- 5.8宕機(panic)
- 5.9宕機恢復(recover)
- 5.10Test功能測試函數
- 6.Go語言的內置容器
- 6.1數組
- 6.2切片
- 6.3map
- 6.4sync.Map
- 6.5list
- 6.6range
- 7.Go語言的結構體
- 8.Go語言的接口
- 9.Go語言的常用內置包
- 10.Go語言的并發
- 11.Go語言的文件I/O操作
- 12.Go語言的網絡編程
- 13.Go語言的反射
- 14.Go語言的數據庫編程
- 15.Go語言密碼學算法
- 16.Go語言的gin框架
- 17.Go語言的網絡爬蟲
- 18.Go語言的編譯和工具鏈