1. 程式人生 > 實用技巧 >【go語言學習】資料型別

【go語言學習】資料型別

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)