数据类型
概览
基本数据类型
- 布尔类型:bool
- 整型:int8、byte、int16、int、uint、uintptr 等
- 浮点类型:float32、float64
- 复数类型:complex64、complex128
- 字符串:string
- 字符类型:rune
- 错误类型:error
复合类型
- 指针(pointer)
- 数组(array)
- 切片(slice)
- 字典(map)
- 通道(chan)
- 结构体(struct)
- 接口(interface)
基本数据类型
布尔类型
var v1 bool
v1 = true
v2 := true
v3 := (1 == 2) // 会被推导为bool类型
var v4 bool
v4 = 1 // 会报错,go是强类型语言
Go语言中,不同类型的值不能用==
或!=
运算符进行比较,!
运算符也不能作用于非布尔类型值。
整型
类型 | 长度(单位:字节) | 说明 | 值范围 | 默认值 |
---|
int8 | 1 | 带符号8位整型 | -128~127 | 0 |
uint8 | 1 | 无符号8位整型,与 byte 类型等价 | 0~255 | 0 |
int16 | 2 | 带符号16位整型 | -32768~32767 | 0 |
uint16 | 2 | 无符号16位整型 | 0~65535 | 0 |
int32 | 4 | 带符号32位整型,与 rune 类型等价 | -2147483648~2147483647 | 0 |
uint32 | 4 | 无符号32位整型 | 0~4294967295 | 0 |
int64 | 8 | 带符号64位整型 | -9223372036854775808~9223372036854775807 | 0 |
uint64 | 8 | 无符号64位整型 | 0~18446744073709551615 | 0 |
int | 32位或64位 | 与具体平台相关 | 与具体平台相关 | 0 |
uint | 32位或64位 | 与具体平台相关 | 与具体平台相关 | 0 |
uintptr | 与对应指针相同 | 无符号整型,足以存储指针值的未解释位 | 32位平台下为4字节,64位平台下为8字节 | 0 |
int
和 int64
也是不同的类型
var v1 int
var v2 int8
v1 = v2 // 编译错误
浮点类型
Go 语言中的浮点数定义了两个类型:float32
和 float64
, float32
是单精度浮点数,可以精确到小数点后 7 位,float64
是双精度浮点数,可以精确到小数点后 15 位
var v1 float float32
var v2 float float64
v1 = 10
v3 : = 10.0 // 如果不加小数点会被推导为整型,该方式默认推导为float64类型
永远不要比较两个浮点数是否相等
浮点数比较
v1 := 0.1512
v2 := 0.0109
j := 0.00001
// 一种近似判断,通过一个可以接受的最小误差值j,约定如果两个浮点数的差值在此精度的误差范围之内,则判定这两个浮点数相等
if math.Dim(float64(v1), v2) < j {
fmt.Println("v1 和 v2 相等")
}
复数类型
字符串
var str string
str = "hello 颖小主"
str1 := "您好,itfengfanzhe"
转译字符
\n
:换行符\r
:回车符\t
:tab 键\u
或 \U :Unicode 字符\\
:反斜杠自身
多行字符串
str := `
您好,这是
多行字符串
`
// 注意空格
不可变值类型
str := "hello word"
str[0] = 'X' // 编译报错
本文链接:https://main.itffz.cn/archives/71.html
3周前
故事线完整,伏笔巧妙,结局耐人寻味。