數(shù)據(jù)類型指定有效的Go變量可以保存的數(shù)據(jù)類型。在Go語言中,類型分為以下四類:
基本類型:數(shù)字,字符串和布爾值屬于此類別。
聚合類型:數(shù)組和結(jié)構(gòu)屬于此類別。
引用類型:指針,切片,map集合,函數(shù)和Channel屬于此類別。
接口類型
在這里,我們將討論Go語言的基本數(shù)據(jù)類型。在基本數(shù)據(jù)類型被進(jìn)一步劃分為三個(gè)子類別分別是:
Numbers
Booleans
Strings
在Go語言中,數(shù)字分為三個(gè)子類別:
整數(shù):在Go語言中,有符號和無符號整數(shù)都可以使用四種不同的大小,如下表所示。有符號的int由int表示,而無符號的整數(shù)由uint表示。
數(shù)據(jù)類型 | 描述 |
---|---|
int8 | 8位有符號整數(shù) |
int16 | 16位有符號整數(shù) |
int32 | 32位有符號整數(shù) |
int64 | 64位有符號整數(shù) |
uint8 | 8位無符號整數(shù) |
uint16 | 16位無符號整數(shù) |
uint32 | 32位無符號整數(shù) |
uint64 | 64位無符號整數(shù) |
int | in和uint都包含相同的大小,無論是32位還是64位。 |
uint | in和uint都包含相同的大小,無論是32位還是64位。 |
rune | 它是int32的同義詞,也表示Unicode代碼點(diǎn)。 |
byte | 它是int8的同義詞。 |
uintptr | 它是無符號整數(shù)類型。它的寬度未定義,但是可以容納指針值的所有位。 |
// 使用整數(shù) package main import "fmt" func main() { // 使用8位無符號整型 var X uint8 = 225 fmt.Println(X+1, X) // 使用16位有符號整型 var Y int16 = 32767 fmt.Println(Y+2, Y-2) }
輸出:
226 225 -32767 32765
浮點(diǎn)數(shù):在Go語言,浮點(diǎn)數(shù)被分成2類如示于下表:
數(shù)據(jù)類型 | 描述 |
---|---|
float32 | 32位IEEE 754浮點(diǎn)數(shù) |
float64 | 64位IEEE 754浮點(diǎn)數(shù) |
// 浮點(diǎn)數(shù)的使用 package main import "fmt" func main() { a := 20.45 b := 34.89 //兩個(gè)浮點(diǎn)數(shù)相減 c := b-a //顯示結(jié)果 fmt.Printf("結(jié)果: %f", c) //顯示c變量的類型 fmt.Printf("\nc的類型是 : %T", c) }
輸出:
結(jié)果: 14.440000 c的類型是: float64
復(fù)數(shù):將復(fù)數(shù)分為兩部分,如下表所示。float32和float64也是這些復(fù)數(shù)的一部分。內(nèi)建函數(shù)從它的虛部和實(shí)部創(chuàng)建一個(gè)復(fù)數(shù),內(nèi)建虛部和實(shí)部函數(shù)提取這些部分。
數(shù)據(jù)類型 | 描述 |
---|---|
complex64 | 包含float32作為實(shí)數(shù)和虛數(shù)分量的復(fù)數(shù)。 |
complex128 | 包含float64作為實(shí)數(shù)和虛數(shù)分量的復(fù)數(shù)。 |
//復(fù)數(shù)的使用 package main import "fmt" func main() { var a complex128 = complex(6, 2) var b complex64 = complex(9, 2) fmt.Println(a) fmt.Println(b) //顯示類型 fmt.Printf("a的類型是 %T 以及"+ "b的類型是 %T", a, b) }
輸出:
(6+2i) (9+2i) a的類型是 complex128 以及b的類型是 complex64
布爾數(shù)據(jù)類型僅表示true或false。布爾類型的值不會(huì)隱式或顯式轉(zhuǎn)換為任何其他類型。
//布爾值的使用 package main import "fmt" func main() { //變量 str1 := "nhooo" str2 := "nhooo" str3 := "nhooo" result1 := str1 == str2 result2 := str1 == str3 //打印結(jié)果 fmt.Println(result1) fmt.Println(result2) //顯示result1和result2的類型 fmt.Printf("result1 的類型是 %T , "+"result2的類型是 %T", result1, result2) }
輸出:
true true result1 的類型是 bool , result2的類型是 bool
字符串?dāng)?shù)據(jù)類型表示Unicode代碼點(diǎn)的序列。換句話說,我們可以說一個(gè)字符串是不可變字節(jié)的序列,這意味著一旦創(chuàng)建了一個(gè)字符串,您就無法更改該字符串。字符串可以包含任意數(shù)據(jù),包括以人類可讀形式包含零值的字節(jié)。
//使用字符串 package main import "fmt" func main() { //用于存儲(chǔ)字符串的str變量 str := "nhooo" //顯示字符串的長度 fmt.Printf("字符串的長度:%d", len(str)) //顯示字符串 fmt.Printf("\n字符串是: %s", str) // 顯示str變量的類型 fmt.Printf("\nstr的類型是: %T", str) }
輸出:
字符串的長度:5 字符串是: nhooo str的類型是: string