數(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語言中,有符號(hào)和無符號(hào)整數(shù)都可以使用四種不同的大小,如下表所示。有符號(hào)的int由int表示,而無符號(hào)的整數(shù)由uint表示。
| 數(shù)據(jù)類型 | 描述 |
|---|---|
| int8 | 8位有符號(hào)整數(shù) |
| int16 | 16位有符號(hào)整數(shù) |
| int32 | 32位有符號(hào)整數(shù) |
| int64 | 64位有符號(hào)整數(shù) |
| uint8 | 8位無符號(hào)整數(shù) |
| uint16 | 16位無符號(hào)整數(shù) |
| uint32 | 32位無符號(hào)整數(shù) |
| uint64 | 64位無符號(hào)整數(shù) |
| int | in和uint都包含相同的大小,無論是32位還是64位。 |
| uint | in和uint都包含相同的大小,無論是32位還是64位。 |
| rune | 它是int32的同義詞,也表示Unicode代碼點(diǎn)。 |
| byte | 它是int8的同義詞。 |
| uintptr | 它是無符號(hào)整數(shù)類型。它的寬度未定義,但是可以容納指針值的所有位。 |
// 使用整數(shù)
package main
import "fmt"
func main() {
// 使用8位無符號(hào)整型
var X uint8 = 225
fmt.Println(X+1, X)
// 使用16位有符號(hào)整型
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