数据类型
int unint的大小与系统有关,整形默认声明int
Go在使用时遵保小不保大,尽量使用占用空间小的数据类型
查看占用空间用
unsafe.Sizeof()
Java 等其他语言将String归于引用数据类型,不属于基本数据类型,但Go语言里属于基本数据类型
var s int64 = 10
fmt.Printf("n2的类型:%T, s占用字节数:%d", s, unsafe.Sizeof(s))
// %T 代表数据类型,%d代表整数
输出:
n2的类型:int64, s占用字节数:8
整数的各个类型
类型 | 有无符号 | 占用空间 | 范围 | 备注 |
---|---|---|---|---|
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一样 | -231 ~231-1 | 等价int32,表示一个Unicode码 |
byte | 无 | 与uint8等价 | 0~255 | 存储字符时,选用byte |
小数类型/浮点型
- 浮点数的存放:符号位+指数位+尾数位
- 浮点数都是有符号的
- 浮点数可能会丢失尾数导致精度损失,因此若对值进行判断,一般不直接使用等号。
- Golang默认声明float64,存储空间不受操作系统位数影响
- 开发中推荐使用float64
类型 | 存储空间 | 表数范围 |
---|---|---|
float32 | 4字节 | -3.403E38~3.403E38 |
float64 | 8字节 | -1.798E308~1.798E308 |
字符类型
若要存储单个字符,一般用byte来保存
Go的字符串是由单个字节连接起来的,也就是说,Go的字符串是由字节构成的,与Java等不同。
- 如果要保存的字符属于ASCII表,则可以用byte直接保存
- 如果字符串对应的码值大于255,考虑用int类型保存
- 如果需要按照字符串的方式输出,则选择格式化输出,
fmt.Println("%c",n)
使用细节
- 字符常量是用单引号括起来的单个字符,如:
byte='a'
- Go语言允许使用转义字符,如:
var c3 char = '\n'
- Go语言字符使用UTF-8编码,英文占1字节,中文3字节
- Go语言中,字符的本质是一个整数,是该字符对应的UTF-8编码的值
- 可以直接个某一个变量赋值一个数字,格式化
%c
输出时,会输出该字符对应的Unicode字符 - 字符型可以进行运算,因为其本质就是一个整数。
- 字符串和其对应码值是规定好的字符编码表决定的
- Go语言的编码是UTF-8,因此基本没有中文乱码的问题。
func main() {
var byte1 byte = 'a'
var byte2 byte = 'b'
fmt.Println(byte1)
fmt.Println(byte2)
fmt.Printf("byte1:%c,byte2:%c \n", byte1, byte2)
fmt.Println(byte1 + byte2) //可以直接相加
fmt.Printf("byte1+byte2=%c", byte1+byte2)
}
输出:
97
98
byte1:a,byte2:b
195
byte1+byte2=Ã
布尔类型
-
也叫bool类型,值仅有true和false
-
bool仅占一个字节
-
该类型主压要用于逻辑运算,一般用于流程控制
String类型
-
字符串就是一串固定长度的字符连接起来的字符序列,Go的字符串由单个字符连接起来,使用UTF-8标识Unicode文本
-
Go语言中字符串不可更改,即一旦复制,不允许再修改值的内容
-
字符串可以用
""
标识,该方式会识别转义字符 -
字符串还可以用``表示,该方式会以字符串的原生形式进行输出,包括换行和特殊字符,可以实现防攻击、输出源码等形式
字符串拼接
var str = "hello"
str += " world"
当字符串很长时,需要用到多行字符串,此时需要把
+
号保留在上一行
str 4 := "hello "+ "world "+
" hello"+" world"