算术运算符
Go 语言中,常见的可用于整数、浮点数和复数的二元运算符有:
+-*/:除,对于整数运算结果仍是整数,如5 / 2 -> 2%:取余,仅用于整数
用于整数和浮点数的一元运算符:
++:自增--:自减
注意:
int、int8等是不同的类型,不能互相直接运算。即使int的大小是 32 bit,仍然和int32属于不同类型。不同类型之间,不能直接运算,除非显式的类型转换;- 在运算时“溢出”不会产生错误,
Go会简单地将超出位数抛弃。如果需要范围无限大的整数或者有理数,可以使用标准库中的big包; 0作为除数,会有错误;- 取余运算符
%只能作用于整数; - 带有
++和--的只能作为语句,而非表达式,如n := i++错误。其它一些可以用于C、C++和Java中的写法在Go中也是不允许的,如f(i++)、a[i]=b[i++]等。
关系运算符
两个相同的类型可以使用下面的二元比较运算符进行比较,结果是布尔类型:
==等于!=不等于<小于<=小于等于>大于>=大于等于
布尔型、数字类型和字符串等基本类型都是可比较的,也就是说两个相同类型的值可以用 == 和 != 进行比较。整数、浮点数和字符串可以根据比较结果排序,许多其它类型的值可能是不可比较的,也就是不可排序。
逻辑运算符
Go 语言中的逻辑运算符:
&&:逻辑与,如果两个操作数都是 true,则结果是 true||:逻辑或,如果两个操作数有一个为 true,则结果为 true!:逻辑非
按位运算符
按位运算符是对整数在内存中的二进制位进行操作。例如,一个字节 8 位:
0在内存中表示000000001在内存中表示00000001
按位运算符只能用于同类型的整数类型。
&:按位与,都为 1 时结果为 1|:按位或,有一个为 1,结果为 1^:按位异或,对应位不同时,结果为 1。用作一元运算符时,按位取反&^:按位零,将指定位置上的值设置为 0<<:左移,整体向左移动>>:右移,整体向右移动
举例:
0: 00000000
1: 00000001
按位与 &:都为 1 时结果为 1
1 & 1 -> 1
00000001 -> 1
00000001 -> 1
00000001 -> 1
1 & 0 -> 0
00000001 -> 1
00000000 -> 0
00000000 -> 0
按位或 |:有一个为 1,结果为 1
1 | 1 -> 1
00000001 -> 1
00000001 -> 1
00000001 -> 1
1 | 0 -> 0
00000001 -> 1
00000000 -> 0
00000001 -> 1
赋值运算符
运算后将值赋予前面的变量:
=+=-=*=/=%=<<=>>=&=^=|=