数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。
Go是静态类型的,这意味着一旦变量类型被定义,它只能存储该类型的数据。
Go有三种基本数据类型:
(资料图片仅供参考)
示例
以下示例展示了Go中的一些不同数据类型:
package mainimport ("fmt")func main() {  var a bool = true     // 布尔值  var b int = 5         // 整数  var c float32 = 3.14  // 浮点数  var d string = "Hi!"  // 字符串  fmt.Println("布尔值: ", a)  fmt.Println("整数: ", b)  fmt.Println("浮点数:   ", c)  fmt.Println("字符串:  ", d)}布尔数据类型使用bool关键字声明,只能取值true或false。
布尔数据类型的默认值是false。
示例
以下示例展示了声明布尔变量的不同方式:
package mainimport ("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}整数数据类型用于存储没有小数点的整数,例如35、-50或1345000。
整数数据类型有两个类别:
提示:整数的默认类型是int。如果不指定类型,类型将为int。
使用int关键字声明的有符号整数可以存储正数和负数:
示例
package mainimport ("fmt")func main() {  var x int = 500  var y int = -4500  fmt.Printf("类型: %T, 值: %v", x, x)  fmt.Printf("类型: %T, 值: %v", y, y)}Go有五个有符号整数的关键字/类型:
| 类型 | 大小 | 范围 | 
|---|---|---|
| int | 取决于平台: | 在32位系统中为 -2147483648 到 2147483647, | 
| 32位系统为32位, | 在64位系统中为 -9223372036854775808 到 9223372036854775807 | |
| 64位系统为64位 | ||
| int8 | 8位/1字节 | -128 到 127 | 
| int16 | 16位/2字节 | -32768 到 32767 | 
| int32 | 32位/4字节 | -2147483648 到 2147483647 | 
| int64 | 64位/8字节 | -9223372036854775808 到 9223372036854775807 | 
使用uint关键字声明的无符号整数只能存储非负数:
示例
package mainimport ("fmt")func main() {  var x uint = 500  var y uint = 4500  fmt.Printf("类型: %T, 值: %v", x, x)  fmt.Printf("类型: %T, 值: %v", y, y)}Go有五个无符号整数的关键字/类型:
| 类型 | 大小 | 范围 | 
|---|---|---|
| uint | 取决于平台: | 在32位系统中为 0 到 4294967295, | 
| 32位系统为32位, | 在64位系统中为 0 到 18446744073709551615 | |
| 64位系统为64位 | ||
| uint8 | 8位/1字节 | 0 到 255 | 
| uint16 | 16位/2字节 | 0 到 65535 | 
| uint32 | 32位/4字节 | 0 到 4294967295 | 
| uint64 | 64位/8字节 | 0 到 18446744073709551615 | 
选择整数类型取决于变量需要存储的值。
示例
以下示例会导致错误,因为1000超出了int8的范围(范围是从-128到127):
package mainimport ("fmt")func main() {  var x int8 = 1000  fmt.Printf("类型: %T, 值: %v", x, x)}结果:
./prog.go:5:7: constant 1000 overflows int8
浮点数数据类型用于存储带有小数点的正数和负数,例如35.3、-2.34或3597.34987。
浮点数数据类型有两个关键字:
类型 大小 范围
提示:浮点数的默认类型是float64。如果不指定类型,类型将为float64。
示例
以下示例展示了如何声明一些float32类型的变量:
package mainimport (  "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)}与float32相比,float64数据类型可以存储更大范围的数字。
示例
以下示例展示了如何声明一个float64类型的变量:
package mainimport (  "fmt")func main() {  var x float64 = 1.7e+308  fmt.Printf("类型:%T,值:%v", x, x)}选择使用哪种浮点类型取决于变量需要存储的值。
示例
以下示例会导致错误,因为3.4e+39超出了float32的范围:
package mainimport (  "fmt")func main() {  var x float32 = 3.4e+39  fmt.Println(x)}结果:
./prog.go:5:7: constant 3.4e+39 overflows float32
字符串数据类型用于存储字符序列(文本)。字符串值必须用双引号括起来:
示例
package mainimport (  "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)}结果:
Type: string, value: Hello!   Type: string, value:   Type: string, value: World 1
为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:
公众号搜索Let us Coding,知乎,开源中国,CSDN,思否,掘金,InfoQ,简书,博客园,慕课,51CTO,helloworld,腾讯开发者社区,阿里开发者社区
看完如果觉得有帮助,欢迎点赞、收藏和关注
关键词: