Go 數(shù)據(jù)類型

數(shù)據(jù)類型是編程中的重要概念。數(shù)據(jù)類型指定了變量值的大小和類型。
Go是靜態(tài)類型的,這意味著一旦變量類型被定義,它只能存儲該類型的數(shù)據(jù)。
Go有三種基本數(shù)據(jù)類型:
bool:表示布爾值,要么是true,要么是false。
數(shù)值型:表示整數(shù)類型、浮點數(shù)值和復(fù)數(shù)類型。
string:表示字符串值。
示例
以下示例展示了Go中的一些不同數(shù)據(jù)類型:
package main
import ("fmt")
func main() {
?var a bool = true ? ? // 布爾值
?var b int = 5 ? ? ? ? // 整數(shù)
?var c float32 = 3.14 ?// 浮點數(shù)
?var d string = "Hi!" ?// 字符串
?fmt.Println("布爾值: ", a)
?fmt.Println("整數(shù): ", b)
?fmt.Println("浮點數(shù): ? ", c)
?fmt.Println("字符串: ?", d)
}
布爾數(shù)據(jù)類型
布爾數(shù)據(jù)類型使用bool關(guān)鍵字聲明,只能取值true或false。
布爾數(shù)據(jù)類型的默認值是false。
示例
以下示例展示了聲明布爾變量的不同方式:
package main
import ("fmt")
func main() {
?var b1 bool = true // 有類型聲明和初始值
?var b2 = true // 無類型聲明但有初始值
?var b3 bool // 有類型聲明但無初始值
?b4 := true // 無類型聲明但有初始值
?fmt.Println(b1) // 輸出 true
?fmt.Println(b2) // 輸出 true
?fmt.Println(b3) // 輸出 false
?fmt.Println(b4) // 輸出 true
}
Go整數(shù)數(shù)據(jù)類型
整數(shù)數(shù)據(jù)類型用于存儲沒有小數(shù)點的整數(shù),例如35、-50或1345000。
整數(shù)數(shù)據(jù)類型有兩個類別:
有符號整數(shù) - 可以存儲正數(shù)和負數(shù)
無符號整數(shù) - 只能存儲非負數(shù)
提示:整數(shù)的默認類型是int。如果不指定類型,類型將為int。
有符號整數(shù)
使用int關(guān)鍵字聲明的有符號整數(shù)可以存儲正數(shù)和負數(shù):
示例
package main
import ("fmt")
func main() {
?var x int = 500
?var y int = -4500
?fmt.Printf("類型: %T, 值: %v", x, x)
?fmt.Printf("類型: %T, 值: %v", y, y)
}
Go有五個有符號整數(shù)的關(guān)鍵字/類型:
類型大小范圍int取決于平臺:在32位系統(tǒng)中為 -2147483648 到 2147483647,32位系統(tǒng)為32位,在64位系統(tǒng)中為 -9223372036854775808 到 922337203685477580764位系統(tǒng)為64位int88位/1字節(jié)-128 到 127int1616位/2字節(jié)-32768 到 32767int3232位/4字節(jié)-2147483648 到 2147483647int6464位/8字節(jié)-9223372036854775808 到 9223372036854775807
無符號整數(shù)
使用uint關(guān)鍵字聲明的無符號整數(shù)只能存儲非負數(shù):
示例
package main
import ("fmt")
func main() {
?var x uint = 500
?var y uint = 4500
?fmt.Printf("類型: %T, 值: %v", x, x)
?fmt.Printf("類型: %T, 值: %v", y, y)
}
Go有五個無符號整數(shù)的關(guān)鍵字/類型:
類型大小范圍uint取決于平臺:在32位系統(tǒng)中為 0 到 4294967295,32位系統(tǒng)為32位,在64位系統(tǒng)中為 0 到 1844674407370955161564位系統(tǒng)為64位uint88位/1字節(jié)0 到 255uint1616位/2字節(jié)0 到 65535uint3232位/4字節(jié)0 到 4294967295uint6464位/8字節(jié)0 到 18446744073709551615
選擇整數(shù)類型取決于變量需要存儲的值。
示例
以下示例會導(dǎo)致錯誤,因為1000超出了int8的范圍(范圍是從-128到127):
package main
import ("fmt")
func main() {
?var x int8 = 1000
?fmt.Printf("類型: %T, 值: %v", x, x)
}
結(jié)果:
./prog.go:5:7: constant 1000 overflows int8
Go浮點數(shù)數(shù)據(jù)類型
浮點數(shù)數(shù)據(jù)類型用于存儲帶有小數(shù)點的正數(shù)和負數(shù),例如35.3、-2.34或3597.34987。
浮點數(shù)數(shù)據(jù)類型有兩個關(guān)鍵字:
類型 大小 范圍
float32 32位 -3.4e+38 到 3.4e+38。
float64 64位 -1.7e+308 到 +1.7e+308。
提示:浮點數(shù)的默認類型是float64。如果不指定類型,類型將為float64。
float32關(guān)鍵字
示例
以下示例展示了如何聲明一些float32類型的變量:
package main
import (
?"fmt"
)
func main() {
?var x float32 = 123.78
?var y float32 = 3.4e+38
?fmt.Printf("類型:%T,值:%v\n", x, x)
?fmt.Printf("類型:%T,值:%v", y, y)
}
float64關(guān)鍵字
與float32相比,float64數(shù)據(jù)類型可以存儲更大范圍的數(shù)字。
示例
以下示例展示了如何聲明一個float64類型的變量:
package main
import (
?"fmt"
)
func main() {
?var x float64 = 1.7e+308
?fmt.Printf("類型:%T,值:%v", x, x)
}
選擇使用哪種浮點類型取決于變量需要存儲的值。
示例
以下示例會導(dǎo)致錯誤,因為3.4e+39超出了float32的范圍:
package main
import (
?"fmt"
)
func main() {
?var x float32 = 3.4e+39
?fmt.Println(x)
}
結(jié)果:
./prog.go:5:7: constant 3.4e+39 overflows float32
字符串?dāng)?shù)據(jù)類型
字符串?dāng)?shù)據(jù)類型用于存儲字符序列(文本)。字符串值必須用雙引號括起來:
示例
package main
import (
?"fmt"
)
func main() {
?var txt1 string = "Hello!"
?var txt2 string
?txt3 := "World 1"
?fmt.Printf("類型:%T,值:%v\n", txt1, txt1)
?fmt.Printf("類型:%T,值:%v\n", txt2, txt2)
?fmt.Printf("類型:%T,值:%v\n", txt3, txt3)
}
結(jié)果:
Type: string, value: Hello! ? Type: string, value: ? Type: string, value: World 1
最后
為了方便其他設(shè)備和平臺的小伙伴觀看往期文章,鏈接奉上:
公眾號搜索Let us Coding
看完如果覺得有幫助,歡迎點贊、收藏和關(guān)注