一、整数类型
1.1 整数的类型
类型 | 有无符号 | 占用存储空间 | 表数范围 |
---|---|---|---|
int8 | 有 | 1字节 | -128 ~ 127 |
int16 | 有 | 2字节 | -215 ~ 215-1 |
int32 | 有 | 4字节 | -231 ~ 231-1 |
int64 | 有 | 8字节 | -263 ~ 263-1 |
类型 | 有无符号 | 占用存储空间 | 表数范围 |
---|---|---|---|
uint8 | 无 | 1字节 | 0 ~ 255 |
uint16 | 无 | 2字节 | 0 ~ 216-1 |
uint32 | 无 | 4字节 | 0 ~ 232-1 |
uint64 | 无 | 8字节 | 0 ~ 264-1 |
类型 | 有无符号 | 占用存储空间 | 表数范围 | 备注 |
---|---|---|---|---|
int | 有 | 32位系统4个字节;64位系统8个字节 | 32位系统:-231 ~ 231-1;64位系统:-263 ~ 263-1 | |
uint | 无 | 32位系统4个字节;64位系统8个字节 | 32位系统:0 ~ 232-1;64位系统:0 ~ 264-1 | |
rune | 有 | 与int32一样(4字节) | -231 ~ 231-1 | 等价int32,表示一个Unicode码 |
byte | 无 | 与uint8等价(1字节) | 0 ~ 255 | 当要储存字符时选用byte |
1.2 变量数据类型的查看
fmt.Printf(“%T”,变量)
1.3 变量占用字节大小的查看
变量占用字节大小的查看:(unsafe包中的函数)
fmt.Printf(“%d”,unsafe.Sizeof(变量))
二、浮点型\小数类型
2.1 类型
类型 | 占用存储空间 | 表数范围 |
---|---|---|
单精度float32 | 4字节 | -3.403E38 ~ 3.403E38 |
双精度float64 | 8字节 | -1.798E308 ~ 1.798E308 |
备注:float64的精度比float32的精度高。
1、Golang浮点型默认声明为float64类型。
2、在Golang中没有float和double类型。
3、浮点数=符号位+指数位+尾数位。尾数部分可能丢失,造成精度损失。
4、浮点数都是有符号的。
5、通常情况下应该使用float64,因为它比float32更精确。
2.2 浮点型常量的两种表现形式
表现形式 | 举例 |
---|---|
十进制数形式 | 如:1.23、0.467、.432(必须有小数点) |
科学计数法形式 | 如:3.2843e2=3.2843×102;3.2843E-2=3.2843÷102;3.2843E2=3.2843×102 |
三、字符类型
3.1 字符类型基本使用
1、在Golang中没有专门的字符类型(char),要储存单个字符或者字母,使用byte来储存。
2、Go的字符串由字节组成。
eg:
package main
import "fmt"
func main() {
var c1 byte = 'a'
var c2 byte = '0'
fmt.Println("c1 = ", c1, "c2 = ", c2)
}
//输出结果:c1 = 97 c2 = 48
ASCII码表:
字符 | 码值(十进制) |
---|---|
a | 97 |
0 | 48 |
3.2 使用格式化输出对应字符
eg:
package main
import "fmt"
func main() {
var c1 byte = 'a'
var c2 byte = '0'
fmt.Printf("c1 = %c , c2 = %c", c1, c2)
}
//输出结果:c1 = a , c2 = 0
3.3 溢出现象的解决
eg:
var c3 int = '南'
fmt.Printf("c3 = %c,c3对应的码值为%d", c3, c3)
//输出结果:c3 = 南,c3对应的码值为21335
3.4 字符类型使用细节
1、字符常量是用单引号括起来的单个字符,如:var c1 byte = ‘a’。
2、Golang中的字符使用UTF-8编码,兼容ASCII码。(可以认为UTF-8编码包含ASCII编码)。
3、在Golang中一个英文字母占1个字节,汉字占3个字节。
4、在Golang中,字符的本质是一个整数,直接输出即为该字符对应的UTF-8编码的码值。
5、数字通过格式化输出%c时,会输出该数字对应的Unicode字符。eg:
var c int = 21335
fmt.Printf(“c = %c”, c)
//输出结果:c = 南
6、字符类型按照Unicode码值进行运算。
7、Golang中的字符编码统一使用UTF-8编码。
四、布尔类型(bool类型)
取值 | 占用大小 | 应用 |
---|---|---|
只有true或false | 1个字节 | 逻辑运算、程序流程控制 |
五、字符串类型
1、Go的字符串是由单个字节连接起来的。
2、Go字符串的字节使用UTF-8编码标识Unicode文本。
5.1 两种表现形式
1、使用双引号,会识别双引号中的转义字符。
2、使用反引号,以字符串的原生形式输出,包括换行和特殊字符。
eg:
package main
import "fmt"
func main() {
var str1 string = `
package main
import "fmt"
func main() {
var str1 string = "Hello World!"
fmt.Println(str1)
}
`
fmt.Println(str1)
}
//输出结果:
// package main
// import "fmt"
// func main() {
// var str1 string = "Hello World!"
// fmt.Println(str1)
// }
5.2 基本使用
eg:
package main
import "fmt"
func main() {
var str1 string = "Hello World!"
fmt.Println(str1)
}
//输出结果:Hello World!
5.3 使用细节
注意:Golang中的字符串赋值之后不可变,不能修改。
字符串拼接方式:
package main
import "fmt"
func main() {
var str1 string = "hello " + "world"
str1 += " nice!"
fmt.Println(str1)
}
//输出结果:hello world nice!
package main
import "fmt"
func main() {
var str1 string = "hello " +
"world" +
"!"
fmt.Println(str1)
}
//输出结果:hello world!
六、Golang基本数据的默认值(零值)
数据类型 | 默认值 |
---|---|
整型 | 0 |
浮点型float32 | 0 |
浮点型float64 | 0 |
字符串 | “” |
布尔类型 | false |
fmt.Printf(“变量值=%v”,变量)