- 浮点型
- float32(1.4e-45到3.4e38)
- float64(4.9e-324到1.8e308)
通常优先使用float64,误差较小
- 浮点数在转换为整型时,会将小数部分去掉,只保留整数部分。
- 浮点数在声明的时候可以只写整数部分或者小数部分;很小或很大的数最好用科学技术书写,通过e或E来指定数部分
- Bool
- var 变量名 bool 默认值false
- bool只有true和false,且不能参与任何计算以及类型转换
- 字符类型
- uint8或者叫byte型,代表了ASCII码的一个字符
- rune类型代表一个UTF-8字符,处理中文日文或者其他符合字符时,需要用到rune类型;等价于int32类型。
- ASCII码的一个字符占用一个字节
- Unicode是ASCII的超集,Go语言支持Unciode,用rune来表示,在内存中用int来表示;unicode.IsLetter()判断是否为字母;.IsDigit()判断是否为数字;.IsSpace()判断是否为空白符号。
- Unicode 与 ASCII 类似,都是一种字符集。
- 0xxxxxx 表示文字符号 0~127,兼容 ASCII 字符集。
- 从 128 到 0x10ffff 表示其他字符。
- 拉丁文语系的字符编码一般占用一个字节;中文占用三个字节
- 字符串类型
- 定义
- var 变量名 string;字符串是UTF-8字符的一个序列。go语言从底层支持utf-8减少内存和硬盘空间的占用。
- 类型
- 字符串是一种值类型且值不可变。当字符为ASCII码表上的字符时则占用一个字节。
- 使用方法
- \n:换行符
- \r:回车符
- \t:tab 键
- \u 或 \U:Unicode 字符
- \:反斜杠自身
- 使用``会被原样进行赋值和输出
- len(ch):求字符串长度
- 字符串是字节的定长数组,byte和rune都是字符类型,若多个字符放在一起,就组成字符串。
- 应用
- 字符串的内容(纯字节)可以通过标准索引法来获取,在方括号[ ]内写入索引,索引从 0 开始计数:
- 直接索引对rune类型无效,可以使用string方法转换 string([ ]rune(ch)[0])
- 获取字符串的某个字节的地址是非法行为
- 字符串拼接
- 可以使用“+”也可以使用+=
- 也可以使用writestring()
- 遍历
- for / for range
- 字符串的格式化
- print : 结果写到标准输出
- Sprint:结果会以字符串形式返回
- 输入样式
- %c 单一字符
- %T 动态类型
- %v 本来值的输出
- %+v 字段名+值打印
- %d 十进制打印数字
- %p 指针,十六进制
- %f 浮点数
- %b 二进制
- %s string
- 字符串查找
- strings.Index():正向搜索子字符串
- strings.LastIndex():反向搜索子字符串
- 修改字符串
- 通过[]byte进行修改
- 定义
- 类型转换
- Go语言不存在隐式类型转换,因此所有的类型转换都必须显式的声明
- 当从一个取值范围较大的类型转换到取值范围较小的类型时(将 int32 转换为 int16 或将 float32 转换为 int),会发生精度丢失的情况。
只有相同底层类型的变量之间可以进行相互转换(如将 int16 类型转换成 int32 类型),不同底层类型的变量相互转换时会引发编译错误(如将 bool 类型转换为 int 类型)
- 类型比较
- Go语言对于值之间的比较有严格限制;只有两个相同类型的值才可以进行比较,如果值的类型时接口,那么他们页必须都是先了相同的接口。如果一个值是常量,那么另外一个值可以不是常量,但是类型必须和该常量类型相同。如果不满足,则必须将其中一个值的类型转换成另外一个值的类型之后才可以进行比较。
- &&,||具有短路行为,如果运算符左边的值已经可以确定整个布尔表达式的值,那么运算符右边的值将不再被求值;&&优先级高于||