Go語言從入門到精通 資料型別

2021-09-12 20:58:45 字數 2337 閱讀 8717

在 go 程式語言中,資料型別用於宣告函式和變數。

資料型別的出現是為了把資料分成所需記憶體大小不同的資料,程式設計的時候需要用大資料的時候才需要申請大記憶體,就可以充分利用記憶體。

go 語言按類別有以下幾種資料型別:

序號型別和描述

1布林型

布林型的值只可以是常量 true 或者 false。乙個簡單的例子:var b bool = true。

2數字型別

整型 int 和浮點型 float32、float64,go 語言支援整型和浮點型數字,並且原生支援複數,其中位的運算採用補碼。

3字串型別:

字串就是一串固定長度的字元連線起來的字串行。go的字串是由單個位元組連線起來的。go語言的字串的位元組使用utf-8編碼標識unicode文字。

4派生型別:

包括:

go 也有基於架構的型別,例如:int、uint 和 uintptr。

序號型別和描述

1uint8

無符號 8 位整型 (0 到 255)

2uint16

無符號 16 位整型 (0 到 65535)

3uint32

無符號 32 位整型 (0 到 4294967295)

4uint64

無符號 64 位整型 (0 到 18446744073709551615)

5int8

有符號 8 位整型 (-128 到 127)

6int16

有符號 16 位整型 (-32768 到 32767)

7int32

有符號 32 位整型 (-2147483648 到 2147483647)

8int64

有符號 64 位整型 (-9223372036854775808 到 9223372036854775807)

浮點型:

序號型別和描述

1float32

ieee-754 32位浮點型數

2float64

ieee-754 64位浮點型數

3complex64

32 位實數和虛數

4complex128

64 位實數和虛數 序號

型別和描述

1byte

類似 uint8

2rune

類似 int32

3uint

32 或 64 位

4int

與 uint 一樣大小

5uintptr

無符號整型,用於存放乙個指標

go 語言也有自動匹配特定平台整型長度的型別—— int 和 uint。

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

不能正確匹配平台位元組長度的程式就類似於用轎車運一頭牛和用一輛卡車運送一頭牛的情形一樣。

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

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

反之,在二進位制傳輸、讀寫檔案的結構描述時,為了保持檔案的結構不會受到不同編譯目標平台位元組長度的影響,不要使用 int 和 uint。

go語言支援兩種浮點型數:float32 和 float64。這兩種浮點型資料格式遵循 ieee 754 標準:

布林型資料在 go 語言中以 bool 型別進行宣告,布林型資料只有 true(真)和 false(假)兩個值。

go 語言中不允許將整型強制轉換為布林型,**如下:

var n bool

fmt.println(int(n) * 2)

編譯錯誤,輸出如下:

cannot convert n (type bool) to type int

布林型無法參與數值運算,也無法與其他型別進行轉換。

本小節主要講解了go語言的資料型別,以及在開發中使用整形、浮點型、bool型別變數時的一些注意事項。

Go語言從入門到精通 資料型別

在 go 程式語言中,資料型別用於宣告函式和變數。資料型別的出現是為了把資料分成所需記憶體大小不同的資料,程式設計的時候需要用大資料的時候才需要申請大記憶體,就可以充分利用記憶體。go 語言按類別有以下幾種資料型別 序號型別和描述 1布林型 布林型的值只可以是常量 true 或者 false。乙個簡...

Go語言從入門到精通 資料型別轉換

go 語言使用型別前置加括號的方式進行型別轉換,一般格式如下 t 表示式 其中,t 代表要轉換的型別。表示式包括變數 複雜算數和函式返回值等。型別轉換時,需要考慮兩種型別的關係和範圍,是否會發生數值截斷等,參見下面 package main import fmt math func main 說明如...

Go語言從入門到精通 字元型別

字串中的每乙個元素叫做 字元 在遍歷或者單個獲取字串元素時可以獲得字元。go 語言的字元有以下兩種 使用 fmt.printf 中的 t動詞可以輸出變數的實際型別,使用這個方法可以檢視 byte 和 rune 的本來型別,如下 var a byte a fmt.printf d t n a,a va...