共计 2813 个字符,预计需要花费 8 分钟才能阅读完成。
数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。
Go 是动态类型的,这意味着一旦变量类型被定义,它只能存储该类型的数据。
Go 有三种根本数据类型:
- bool:示意布尔值,要么是 true,要么是 false。
- 数值型:示意整数类型、浮点数值和复数类型。
- string:示意字符串值。
示例
以下示例展现了 Go 中的一些不同数据类型:
package main
import ("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 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 整数数据类型
整数数据类型用于存储没有小数点的整数,例如 35、-50 或 1345000。
整数数据类型有两个类别:
- 有符号整数 – 能够存储负数和正数
- 无符号整数 – 只能存储非正数
提醒:整数的默认类型是 int。如果不指定类型,类型将为 int。
有符号整数
应用 int 关键字申明的有符号整数能够存储负数和正数:
示例
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 有五个有符号整数的关键字 / 类型:
类型 | 大小 | 范畴 |
---|---|---|
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 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 有五个无符号整数的关键字 / 类型:
类型 | 大小 | 范畴 |
---|---|---|
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 main
import ("fmt")
func main() {
var x int8 = 1000
fmt.Printf("类型: %T, 值: %v", x, x)
}
后果:
./prog.go:5:7: constant 1000 overflows int8
Go 浮点数数据类型
浮点数数据类型用于存储带有小数点的负数和正数,例如 35.3、-2.34 或 3597.34987。
浮点数数据类型有两个关键字:
类型 大小 范畴
- float32 32 位 -3.4e+38 到 3.4e+38。
- float64 64 位 -1.7e+308 到 +1.7e+308。
提醒:浮点数的默认类型是 float64。如果不指定类型,类型将为 float64。
float32 关键字
示例
以下示例展现了如何申明一些 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 关键字
与 float32 相比,float64 数据类型能够存储更大范畴的数字。
示例
以下示例展现了如何申明一个 float64 类型的变量:
package main
import ("fmt")
func main() {
var x float64 = 1.7e+308
fmt.Printf("类型:%T,值:%v", x, x)
}
抉择应用哪种浮点类型取决于变量须要存储的值。
示例
以下示例会导致谬误,因为 3.4e+39 超出了 float32 的范畴:
package main
import ("fmt")
func main() {
var x float32 = 3.4e+39
fmt.Println(x)
}
后果:
./prog.go:5:7: constant 3.4e+39 overflows float32
字符串数据类型
字符串数据类型用于存储字符序列(文本)。字符串值必须用双引号括起来:
示例
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)
}
后果:
`Type: string, value: Hello!
Type: string, value:
Type: string, value: World 1`
最初
为了不便其余设施和平台的小伙伴观看往期文章,链接奉上:
公众号搜寻 Let us Coding
, 知乎 , 开源中国 ,CSDN, 思否 , 掘金 ,InfoQ, 简书 , 博客园 , 慕课 ,51CTO,helloworld, 腾讯开发者社区 , 阿里开发者社区
看完如果感觉有帮忙,欢送 点赞、珍藏 和关注