go基础-数据类型一
概览
基本数据类型
- 布尔类型: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://www.cnblogs.com/yingxiaozhu/p/16097699.html
                    
                
                
            
        
浙公网安备 33010602011771号