Go基本数据类型
Go内置多种基本数据类型,语法简洁高效。
数值类型
整数类型
Go
// 有符号整数
int8 // -128 到 127
int16 // -32768 到 32767
int32 // -2^31 到 2^31-1
int64 // -2^63 到 2^63-1
int // 32或64位(取决于平台)
// 无符号整数
uint8 // 0 到 255(同byte)
uint16 // 0 到 65535
uint32 // 0 到 2^32-1
uint64 // 0 到 2^64-1
uint // 32或64位(取决于平台)
// 特殊类型
byte // uint8别名
rune // int32别名,表示Unicode码点
uintptr // 存放指针
浮点类型
Go
float32 // 32位浮点数
float64 // 64位浮点数(默认推荐)
var a float32 = 3.14
var b float64 = 3.14159265358979
浮点运算推荐使用float64,精度更高。
复数类型
Go
complex64 // 两个float32
complex128 // 两个float64
var c complex128 = 1 + 2i
fmt.Println(real(c)) // 实部:1
fmt.Println(imag(c)) // 虚部:2
布尔类型
Go
bool // true 或 false
var b bool = true
var c bool = false
// 默认值false
var d bool
fmt.Println(d) // false
布尔值不能转换为整数,Go无隐式类型转换。
字符串类型
Go
string // 字符串,UTF-8编码
var s string = "Hello"
var t string = "世界"
// 多行字符串
var m string = `
第一行
第二行
`
// 字符串不可变
s[0] = 'h' // 编译错误!
字符串操作
Go
s := "Hello"
// 获取长度
len(s) // 5
// 遍历字节
for i := 0; i < len(s); i++ {
fmt.Println(s[i]) // 打印字节值
}
// 遍历字符
for i, c := range s {
fmt.Println(i, c) // 打印索引和Unicode码点
}
类型大小表
| 类型 | 大小 | 范围 |
|---|---|---|
| int8 | 1字节 | -128~127 |
| int16 | 2字节 | -32768~32767 |
| int32 | 4字节 | ±2×10^9 |
| int64 | 8字节 | ±9×10^18 |
| float32 | 4字节 | 约7位精度 |
| float64 | 8字节 | 约15位精度 |
| bool | 1字节 | true/false |
| string | 动态 | UTF-8 |
类型别名
Go
// 内置别名
byte // = uint8
rune // = int32
// 自定义别名
type MyInt int
type MyString string
var n MyInt = 10
var s MyString = "hello"
要点总结
- 整数分有符号/无符号,大小明确
- int/uint大小取决于平台
- float64推荐,精度更高
- bool只有true/false,默认false
- string是UTF-8编码,不可变
- byte是uint8别名,rune是int32别名
- Go无隐式类型转换
📝 发现内容有误?点击此处直接编辑