文章15 | 阅读 7623 | 点赞0
布尔类型bool
长度:1字节
取值:布尔类型的取值只能是true或者false,不能用数字来表示
整型
通用整型 int / uint(有符号 / 无符号,下面也类似)
长度:根据运行平台可能为32(4个字节)位或者64位(8个字节)
8位整型 int8 / uint8
长度:1个字节
取值范围:-128~127 / 0~255
16位整型 int16 / uint16
长度:2个字节
取值范围:-32768~32767 / 0~65535
32位整型 int32 / uint32
长度:4个字节
取值范围:− 2 32 2 -\frac{2^{32}}{2}−2232 ~ 2 32 2 − 1 \frac{2^{32}}{2}-12232−1 / 0~2 32 − 1 2^{32}-1232−1
64位整型 int64 / uint64
长度:8个字节
取值范围:− 2 64 2 -\frac{2^{64}}{2}−2264 ~ 2 64 2 − 1 \frac{2^{64}}{2}-12264−1 / 0~2 64 − 1 2^{64}-1264−1
浮点型
32位浮点型float32
长度:4个字节
小数点位数:精确到7小数位
64位浮点型float64
长度:8个字节
小数点位数:精确到15小数位
复数
32位实数和虚数complex64
64位实数和虚数complex128
足够保存指针的32位或64位整型:uniptr
其它值类型
array、 struct、string
引用类型
slice、map、chan
接口类型:interface
函数类型:func
类型别名
当在使用某个类型时,可以给它起另外一个名字,然后就可以在代码中使用新的名字了。比如type MONEY int
,之后就可以使用MONEY
来操作int
型的数据了。
type(
整数 int32
小数 float64
)
var a 整数 = 1
值得注意的是,在Go中有两个类型byte
和rune
,它们分别是uint8
和uint32
的别名。其中,byte
是一个字节的长度,主要用来处理ascii字符;而rune
是4个字节长度,可以用来处理unicode或者utf-8字符
类型零值
零值并非空值,而是当变量被声明为某种类型后的默认值。通常情况下数值类型的默认值为0,bool类型的默认值为false,string类型的默认值为空字符串
Go中的运算符都是从左往右结合的,一元运算符只可以用作一个值的操作(作为后缀),而二元运算符则可以和两个值或者操作数结合(作为中缀)。优先级越高的运算符可以优先执行,下面从上到下表示各个运算符优先级从高到低:
优先级 | 运算符 | 备注 |
---|---|---|
7 | ^ ! | 一元运算符,^按位取反,!逻辑非 |
6 | * / % << >> & &^ | *乘,/除,%取余,<<位左移,>>位右移,&按位与,&^按位清零 |
5 | + - | ^ | +加,-减,|按位或,^异或 |
4 | == != < <= >= > | ==等于,!=不等,<小于,<=小于等于,>=大于等于,>大于 |
3 | <- | 用于channel |
2 | && | 逻辑与 |
1 | || | 逻辑或 |
当然,可以通过括号来提升某个表达式的运算优先级
!
!true -> false
!false -> true
逻辑或||
true || true -> true
true || false -> true
false || true -> true
false || false -> false
逻辑与&&
true || true -> true
true || false -> false
false || true -> false
false || false -> false
值得注意的是,在 Go 语言中,&& 和 || 具有短路性质,当运算符左边表达式的值已经能够决定整个表达式的值的时候(&& 左边的值为 false,|| 左边的值为 true),运算符右边的表达式将不会被执行。利用这个性质,如果你有多个条件判断,应当将计算过程较为复杂的表达式放在运算符的右侧以减少不必要的运算
位运算 (只能用于整型)
按位与& :将对应位上的值进行与运算,即两个都为1时结果才为1,否则为0
按位或|:将对应位上的值进行或运算,即只要有一个为1时结果为1,两个都为0时结果为0
按位异或^:对应位上的值相同,结果位0;否则结果为1
需要注意的时,^
作为一元运算符时,功能是按位取反,包括符号位在内(注意有符号数和无符号数的区别)。举个例子:
func main(){
var i uint8 = 20
fmt.Println(^i,^20) // 输出结果是:235 -21
}
上面的例子中,一个是有符号的数一个是无符号的数,第一个i为无符号的数,^i 即^0001 0100 = 1110 1011 ,则结果为235,是无符号的数;第二个20默认是有符号的数,结果也为有符号数,为其负数补码(一个有符号位的^操作为 这个数+1的相反数)
&^
:对运算符左边的数的每一位根据运算符右边的数对应位上的值进行操作,如果右边数对应位上为1,则左边数对应位为0,如果右边数对应位上为0,则左边对应位的数不变4 &^ 5 -> 101 &^ 100 = 001
左移<<
右移>>
:用法:num << n
或num >> n
向左或向右移动n位,空白部分用0填充
算术运算符
常见的用于整型和浮点型数的运算符有+
,-
,*
,/
,其中/
对于整数运算,其结果还是整数
取余运算%
只能作用于整数
可以将语句a = a + b
简写为a += b
,同样的写法也适用于-=
,*=
,/=
,%=
在Go中,自增自减语句++
,--
只能作为语句,不能作为表达式,比如n = i++
这样的写法是无效的
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/xah100147/article/details/106093443
内容来源于网络,如有侵权,请联系作者删除!