【go語言學習】資料型別
阿新 • • 發佈:2020-10-23
Go語言中有豐富的資料型別,除了基本的整型、浮點型、布林型、字串外,還有陣列、切片、結構體、函式、map、通道(channel)等。
一、基本資料型別
1、整型
整型分為以下兩個大類: 按長度分為:int8、int16、int32、int64 對應的無符號整型:uint8、uint16、uint32、uint64
其中,uint8就是我們熟知的byte型,int16對應C語言中的short型,int64對應C語言中的long型。
型別 | 描述 |
---|---|
int8 | 有符號 8位整型 (-128 到 127) |
int16 | 有符號 16位整型 (-32768 到 32767) |
int32 | 有符號 32位整型 (-2147483648 到 2147483647) |
int64 | 有符號 64位整型 (-9223372036854775808 到 9223372036854775807) |
uint8 | 無符號 8位整型 (0 到 255) |
uint16 | 無符號 16位整型 (0 到 65535) |
uint32 | 無符號 32位整型 (0 到 4294967295) |
uint64 | 無符號 64位整型 (0 到 18446744073709551615) |
特殊的整型
型別 | 描述 |
---|---|
int | 32位作業系統上就是int32,64位作業系統上就是int64 |
uint | 32位作業系統上就是uint32,64位作業系統上就是uint64 |
2、浮點型
- float32 的浮點數的最大範圍約為
3.4e38
,可以使用常量定義:math.MaxFloat32
。 - float64 的浮點數的最大範圍約為
1.8e308
,可以使用一個常量定義:math.MaxFloat64
。
3、布林型bool
bool布林型資料只有true(真)和false(假)兩個值。
注意:
- 布林型別變數的預設值為false
- Go 語言中不允許將整型強制轉換為布林型
- 布林型無法參與數值運算,也無法與其他型別進行轉換
4、字串型別string
Go語言中的字串以原生資料型別出現,使用utf-8編碼
字串的定義可以使用雙引號""
,也可以用反引號``
s1 := "hello world" s2 := `hello world`
字串轉義符
轉義符 | 含義 |
---|---|
\r |
回車符(返回行首) |
\n |
換行符(直接跳到下一行的同列位置) |
\t |
製表符 |
\' |
單引號 |
\" |
雙引號 |
\\ |
反斜槓 |
單引號'
和雙引號"
var a = '中'
var b = "中"
fmt.Printf("%T, %v, %c\n", a, a, a) \\int32, 20013, 中
fmt.Printf("%T, %v\n", b, b) \\string, 中
5、byte和rune型別
Go 語言的字元有以下兩種:
- uint8型別,或者叫 byte 型,代表了ASCII碼的一個字元。
- rune型別,代表一個 UTF-8字元。
當需要處理中文、日文或者其他複合字符時,則需要用到rune型別。rune型別實際是一個int32。
// 遍歷字串
s := "hello世界"
for i := 0; i < len(s); i++ {
fmt.Printf("%v[%c] ", s[i], s[i])
}
for _, v := range s {
fmt.Printf("%v[%c]", v, v)
}
輸出:
104[h] 101[e] 108[l] 108[l] 111[o] 228[ä] 184[¸] 150[] 231[ç] 149[] 140[]
104[h]101[e]108[l]108[l]111[o]19990[世]30028[界]
6、型別轉換Type Convert
語法格式:Type(Value)
常數:在有需要的時候,會自動轉型
變數:需要手動轉型T(V)
注意點:相容型別才可以轉換
二、複合型別
1、指標型別(pointer)
2、陣列型別(array)
3、結構體型別(strutct)
4、函式型別(function)
5、切片型別(slice)
6、介面型別(interface)
7、Map型別(map)
8、管道型別(channel)