// 实例
package mainimport"fmt"func main(){var a int =21var b int =10var c intc = a + bfmt.Printf("\033[31m第一行 c 的值为: %d\033[0m\n",c)c = a - bfmt.Printf("\033[32m第二行 c 的值为: %d\033[0m\n",c)c = a * bfmt.Printf("\033[33m第三行 c 的值为: %d\033[0m\n",c)c = a / bfmt.Printf("\033[34m第四行 c 的值为: %d\033[0m\n",c)c = a % bfmt.Printf("\033[35m第五行 c 的值为: %d\033[0m\n",c)a++fmt.Printf("\033[36m第六行 c 的值为: %d\033[0m\n",a)a =21 // 为了方便测试, a 这里重新赋值为21a--fmt.Printf("\033[37m第七行 c 的值为: %d\033[0m\n",a)}
以上实例运行结果:
第一行 c 的值为: 31
第二行 c 的值为: 11
第三行 c 的值为: 210
第四行 c 的值为: 2
第五行 c 的值为: 1
第六行 c 的值为: 22
第七行 c 的值为: 20
1.2、关系运算符
下表列出了所有Go语言的关系运算符。假定A值为10,B值为20。
运算符
描述
实例
==
检查两个值是否相等,如果相等返回True 否则返回False
(A == B)为False
!=
检查两个值是否不相等,如果不相等返回True 否则返回False
(A != B) 为True
>
检查左边值是否大于右边值,如果是返回True 否则返回False
(A > B)为 False
<
检查左边值是否小于右边值,如果是返回True 否则返回False
(A < B) 为True
>=
检查左边值是否大于等于右边值,如果是返回True否则返回False
(A >= B)为False
<=
检查左边值是否小于等于右边值,如果是返回True否则返回False
(A <= B)为True
以下实例演示了关系运算符的用法:
// 实例
package mainimport"fmt"func main(){var a int =21var b int =10if(a == b){fmt.Printf("第一行 a 等于 b\n")}else{fmt.Printf("第一行 a 不等于 b\n")}if(a < b){fmt.Printf("第二行 a 小于 b\n")}else{fmt.Printf("第三行 a 不小于 b\n ")}if(a > b){fmt.Printf("第三行 a 大于 b\n")}else{fmt.Printf("第三行 a 不大于 b\n")}/* 改变a 和 b 的值 */a =5b =20if(a <= b){fmt.Printf("第四行 a 小于等于 b\n")}if(a >= b){fmt.Printf("第五行 a 大于等于 b\n")}}
以上实际运行结果:
第一行 a 不等于 b
第四行 a 不小于 b
第三行 a 大于 b
第四行 a 小于等于 b
第五行 b 大于等于 a
1.3、逻辑运算符
下表列出了所有Go语言的逻辑运算符。假定A值为True,B值为False。
运算符
描述
实例
&&
逻辑AND运算符。如果两边的操作数都是True,则条件True,否则为False
(A &&B)为False
||
逻辑OR运算符。如果两边的操作数有一个True,则条件True,否则为False
(A || B)为True
!
逻辑NOT运算符。如果条件为True,则逻辑NOT条件False,否则为True
!(A && B)为True
以上实例演示了逻辑运算符的用法:
package mainimport"fmt"func main(){var a bool =truevar b bool =falseif(a && b){fmt.Printf("第一行条件为 true\n")}if(a || b){fmt.Printf("第二行条件为 true\n")}/* 修改a 和 b 的值 */a =falseb =trueif(a && b){fmt.Printf("第三行条件为 true\n")}else{fmt.Printf("第三行条件为 false\n")}if(!(a && b)){fmt.Println("第四行条件为 true\n")}}
以上实例运行结果:
第二行条件为 true
第三行条件为 false
第四行条件为 true
1.4、位运算符
位运算符对整数在内存中的二进制位进行操作
下表列出了位运算符&,|,和^的计算
p
q
p & q
p | q
p ^ q
0
0
0
0
0
0
1
0
1
1
1
1
1
1
0
1
0
0
1
1
假定A = 60;B= 13;其二进制数转换为:
A = 0011 1100
B = 0000 1101----------------A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
package mainimport"fmt"func main(){var a uint =60 /* 60= 0011 1100 */var b uint =13 /* 13= 0000 1101 */var c uint =0c = a & b /* 12= 0000 1100 */fmt.Printf("第一行 c 的值为 %d\n", c)c = a | b /* 61= 0011 1101 */fmt.Printf("第二行 c 的值为 %d\n", c)c = a ^ b /* 49=0011 0001 */fmt.Printf("第三行 c 的值为 %d\n", c)c = a <<2fmt.Printf("第四行 c 的值为 %d\n", c)c = a >>2fmt.Printf("第五行 c 的值为 %d\n", c)}
以上实例运行结果:
第一行 c 的值为 12
第二行 c 的值为 61
第三行 c 的值为 49
第四行 c 的值为 240
第五行 c 的值为 15
1.5、赋值运算符
下表列出了所有Go语言的赋值运算符。
运算符
描述
实例
=
简单的赋值运算符,将一个表达式的值赋值给一个左值
C = A + B将A + B表达式结果赋值给C
+=
相加后再赋值
C += A 等于 C = C + A
-=
相减后再赋值
C -= A 等于 C = C - A
*=
相乘后再赋值
C *= A 等于 C = C * A
/=
相除后再赋值
C /= A 等于 C = C / A
%=
求余后再赋值
C %= A 等于 C = C % A
<<=
左移后再赋值
C <<= 2 等于 C = C << 2
>>=
右移后再赋值
C >> 2 等于 C = C >> 2
&=
按位与后赋值
C &= 2 等于 C = C & 2
^=
按位异或后赋值
C ^= 2 等于 C = C ^ 2
|=
按位或后赋值
C |= 2 等于 C = C | 2
以下实例演示了赋值运算符的用法:
// 实例
package mainimport"fmt"func main(){var a int =21var c intc = afmt.Printf("第1行 = 运算符实例, c 的值位 %d\n", c)c += afmt.Printf("第2行 += 运算符实例, c 的值位 %d\n", c)c -= afmt.Printf("第3行 -= 运算符实例, c 的值位 %d\n", c)c *= afmt.Printf("第4行 *= 运算符实例, c 的值位 %d\n", c)c /= afmt.Printf("第5行 /= 运算符实例, c 的值位 %d\n", c)c =200c <<=2fmt.Printf("第6行 <<= 运算符实例, c 的值位 %d\n", c)c >>=2fmt.Printf("第7行 >>= 运算符实例, c 的值位 %d\n", c)c &=2fmt.Printf("第8行 &= 运算符实例, c 的值位 %d\n", c)c ^=2fmt.Printf("第9行 ^= 运算符实例, c 的值位 %d\n", c)c |=2fmt.Printf("第10行 |= 运算符实例, c 的值位 %d\n", c)}
package mainimport"fmt"func main(){var a int =20var b int =10var c int =15var d int =5var e inte =(a + b) * c / dfmt.Printf("(a + b) * c / d 的值为: %d\n", e)e =((a + b) * c) / dfmt.Printf("((a + b ) * c) / d 的值为: %d\n", e)e =(a + b) * (c / d)fmt.Printf("(a + b) * (c / d)的值为: %d\n", e)e = a + (b*c)/dfmt.Printf("a + (b * c) / 的值为: %d\n", e)}
以上实例运行结果:
(a + b) * c / d 的值为: 90((a + b ) * c) / d 的值为: 90(a + b) * (c / d)的值为: 90
a + (b * c) / 的值为: 50