golang数值类型包括:整形数,浮点数,复数。(不同大小,是否支持正负都是不同类型)
整形
包括有符号的整形 int8 int16 int32 int64以及对应的无符号整形数 uint8 uint16 uint32 uint64 这里面的数字 8,16,32,64对应的是计算机位数 。
这里对应有特定平台的有符号int型与无符号uint型 这两种类型是根据CPU的处理位数来确定对应大小的
uintptr 没有指定大小,但是可以容纳指针。
有符号整形 以最高位代表符号位,超出会导致值为相反符号数 例如 int8 127+1 = -128
在golang中取模运算%的符号总是和被取模数的符号一致 例如: -5%3 与-5%-3 的结果都是 -2
除法运算符 / 的行为依赖于操作数是否全为证书,例如 5/4 结果为1 截断余数 5.0/4.0 结果为 1.25 (5.0/4) = (5/4.0) = 1.25
golang 提供位运算符 位运算说明
- & 位运算 AND
- | 位运算OR
- ^ 位运算 XOR
- &^ 位清空 AND NOT
- << 左移
- >> 右移
len函数返回的是有符号整形int值
两种类型的整形数是无法进行直接算数运算的,需要转型之后才可以计算,哪怕相同长度类型的整形也需要。转换最简单的用法 int(XXX) 浮点型转换为整形会丢失小数点后的精度。
在golang中NAN与NAN做 比较 结果为 flase;
字符串
一个字符串是一个不可改变的序列;尝试修改字符串的部分会报错。
常用的字符串处理包
bytes,strings,strconv,unicode.
- bytes包提供类似字符串的查询、替换、比较、截断、拆分和合并功能。
- strings包与byte包类似只不过byte包针对[]byte类型,因为字符串都是只读的,因此逐步构建字符串会导致很多的分配和复制,这时候bytes包中的byte.Buffer类型会更有效与操作。
- strconv 包提供的类型转换相关函数
- unicode包提供字符串自身转换相关的函数,如:IsDigit、IsLetter、IsUpper、IsLower、ToUpper、ToLower等操作函数。
- path 和 path、filepath包 提供了关于文件路径名更一般的函数操作。
strings包中6个常用函数:
func Contains(s,substr string) bool 判断是否是子串
func Count(s,sep string) int 字符串中子串出现的次数
func Fields(s string) [] string 字符串分隔为切片
func HasPrefix(s,prefix string)bool 判断是否以……开头
func Index(s,sep string) int 返回子串第一次出现的位置
func Join(a []string sep string) string 切片转换为字符串
常量
常量表达式的值在编译期计算,而不是在运行期,每种常量的潜在类型都是基础类型:布尔,string或者数字
iota常量生成器 常量自增
无类型常量 编译器为这些没有明确的基础类型的数字常量提供比基础类型更高精度的算术运算,至少256位运算。
六种未明确类型的常量类型如下:
- 无类型布尔型 、无类型的整数、无类型的字符、无类型的浮点数、无类型的复数、无类型的字符串
有疑问加站长微信联系(非本文作者)