各个编程语言中的运算符作用基本相同,即在程序运行时执行数学或逻辑运算。Go语言中包含算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符等6种运算符。下面分别讲解这6种运算符。
表3.4列出了Go语言中所有算术运算符及其说明,并且通过示例及其运算结果展示各个算术运算符的使用方法。其中,变量a、b和c的类型是int,变量a的初始值为7,变量b的初始值为11。
表3.4 Go语言中的算术运算符及其说明
表3.5列出了Go语言中的关系运算符及其说明,并且通过示例及其运算结果展示各个关系运算符的使用方法。其中,变量a和b的类型是int,变量a的初始值为7,变量b的初始值为11。
表3.5 Go语言中的关系运算符及其说明
表3.6列出了Go语言中的逻辑运算符及其说明,并且通过示例及其运算结果展示各个逻辑运算符的使用方法。其中,有两个操作数(布尔类型的变量或返回布尔类型的值的表达式)a和b。
表3.6 Go语言中的所有逻辑运算符及其说明
表3.7列出了Go语言的位运算符及其说明,这些位运算符都是双目运算符。
表3.7 Go语言中的位运算符及其说明
位运算符“&”“|”和“^”能够对整数在内存中的二进制位进行操作,操作的结果如表3.8所示。
表3.8 位运算符对整数在内存中的二进制位进行操作及其结果
“&”运算符的使用方法是先将两个操作数转换成二进制数,再将两个二进制操作数的最低位对齐(右对齐),然后让两个二进制数的每一位都做按位与运算。若同一位的两个值都为1,则对应位的结果为1,否则对应位的结果为0。例如,12和8经按位与运算后的结果是8。运算过程如下。
“|”运算符的使用方法是先将两个操作数转换成二进制数,再将两个二进制操作数的最低位对齐(右对齐),然后让两个二进制数的每一位都做按位或运算。若同一位的两个值都为0,则对应位的结果为0,否则对应位的结果为1。例如,4和8经按位或运算后的结果是12。运算过程如下。
“^”运算符使用方法是先将两个操作数转换成二进制数,再将两个二进制操作数的最低位对齐(右对齐),然后让两个二进制数的每一位都做按位异或运算。若同一位的两个值相同,则对应位的结果为0;若同一位的两个值不同,则对应位的结果就为1。例如,31和22经按位异或运算后的结果是9。运算过程如下。
位运算符“<<”和“>>”能够对变量进行左移或右移运算,代码如下。
运行结果如下。
24 右移2位后的结果是: 6 -16 左移3位后的结果是: -128
所谓复合赋值运算符,就是把赋值运算符与其他运算符合并成一个运算符,进而同时实现两种运算符的效果。Go语言中的复合赋值运算符及其说明如表3.9所示。
表3.9 Go语言中的复合赋值运算符及其说明
【例3.6】 使用复合赋值运算符对两个整数进行运算 (实例位置:资源包 \TM\sl\3\6 )
使用“短变量声明”的语法格式分别声明并初始化int类型的变量a和b;其中,变量a的初始值为7,变量b的初始值为11。分别使用表3.9中的复合赋值运算符对这两个整数进行运算。打印运算后的结果。代码如下。
运行结果如下。
运算符的优先级决定表达式中运算执行的先后顺序。通常优先级由高到低的顺序依次是:自增和自减运算、算术运算、比较运算、逻辑运算及赋值运算。
如果两个运算符具有相同的优先级,那么左边的表达式比右边的表达式先被处理。表3.10显示Go语言中各个运算符的优先级。
表3.10 Go语言中各个运算符的优先级