数据类型
数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。Go是静态类型的,这意味着一旦变量类型被定义,它只能存储该类型的数据。
基本数据类型
Go
有三种基本数据类型:
bool
:表示布尔值,要么是true,要么是false。- 数值型:表示整数类型、浮点数值和复数类型。
string
:表示字符串值。
示例
以下示例展示了Go中的一些不同数据类型:
代码语言: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。
示例
以下示例展示了声明布尔变量的不同方式:
代码语言:go复制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, 值: %vn", x, x)
fmt.Printf("类型: %T, 值: %vn", y, y)
}
Go有五个有符号整数的关键字/类型:
类型 | 大小 | 范围 |
---|---|---|
| 取决于平台: | 在32位系统中为 -2147483648 到 2147483647, |
32位系统为32位, | 在64位系统中为 -9223372036854775808 到 9223372036854775807 | |
64位系统为64位 | ||
| 8位/1字节 | -128 到 127 |
| 16位/2字节 | -32768 到 32767 |
| 32位/4字节 | -2147483648 到 2147483647 |
| 64位/8字节 | -9223372036854775808 到 9223372036854775807 |
无符号整数
使用uint
关键字声明的无符号整数只能存储非负数:
package main
import ("fmt")
func main() {
var x uint = 500
var y uint = 4500
fmt.Printf("类型: %T, 值: %vn", x, x)
fmt.Printf("类型: %T, 值: %vn", y, y)
}
Go有五个无符号整数的关键字/类型:
类型 | 大小 | 范围 |
---|---|---|
| 取决于平台: | 在32位系统中为 0 到 4294967295, |
32位系统为32位, | 在64位系统中为 0 到 18446744073709551615 | |
64位系统为64位 | ||
| 8位/1字节 | 0 到 255 |
| 16位/2字节 | 0 到 65535 |
| 32位/4字节 | 0 到 4294967295 |
| 64位/8字节 | 0 到 18446744073709551615 |
选择整数类型取决于变量需要存储的值。
以下示例会导致错误,因为1000超出了int8
的范围(范围是从-128到127):
package main
import ("fmt")
func main() {
var x int8 = 1000
fmt.Printf("类型: %T, 值: %vn", x, x)
}
结果:
代码语言:bash复制./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,值:%vn", x, x)
fmt.Printf("类型:%T,值:%vn", y, y)
}
float64
关键字
与float32
相比,float64
数据类型可以存储更大范围的数字。
以下示例展示了如何声明一个float64
类型的变量:
package main
import (
"fmt"
)
func main() {
var x float64 = 1.7e 308
fmt.Printf("类型:%T,值:%vn", x, x)
}
选择使用哪种浮点类型取决于变量需要存储的值。
以下示例会导致错误,因为3.4e 39超出了float32
的范围:
package main
import (
"fmt"
)
func main() {
var x float32 = 3.4e 39
fmt.Println(x)
}
结果:
代码语言:bash复制./prog.go:5:7: constant 3.4e 39 overflows float32
字符串数据类型
字符串数据类型用于存储字符序列(文本)。字符串值必须用双引号括起来:
代码语言:go复制package main
import (
"fmt"
)
func main() {
var txt1 string = "Hello!"
var txt2 string
txt3 := "World 1"
fmt.Printf("类型:%T,值:%vn", txt1, txt1)
fmt.Printf("类型:%T,值:%vn", txt2, txt2)
fmt.Printf("类型:%T,值:%vn", txt3, txt3)
}
结果:
代码语言:bash复制类型:string, 值:Hello!
类型:string, 值:
类型:string, 值:World 1
最后
为了方便其他设备和平台的小伙伴观看往期文章:
看完如果觉得有帮助,欢迎 点赞、收藏、关注