x := a + b fmt.Printf("x: %v\n", x) x = a - b fmt.Printf("x: %v\n", x) x = a * b fmt.Printf("x: %v\n", x) x = a / b fmt.Printf("x: %v\n", x) x = a % b fmt.Printf("x: %v\n", x)
a++ fmt.Printf("a: %v\n", a) b-- fmt.Printf("b: %v\n", b) }
x := a == b fmt.Printf("x: %v\n", x) x = a != b fmt.Printf("x: %v\n", x) x = a > b fmt.Printf("x: %v\n", x) x = a >= b fmt.Printf("x: %v\n", x) x = a < b fmt.Printf("x: %v\n", x) x = a <= b fmt.Printf("x: %v\n", x) }
funcmain() { a := true b := false fmt.Printf("(a && b): %v\n", (a && b)) fmt.Printf("(a || b): %v\n", (a || b)) fmt.Printf("(!a): %v\n", (!a)) fmt.Printf("(!b): %v\n", (!b)) }
运行结果
1 2 3 4
(a && b): false (a || b): true (!a): false (!b): true
位运算符
位运算符对整数在内存中的二进制位进行操作
运算符
描述
&
参与运算的两数各对应的二进位相与。(两位均为1才为1)
|
参与运算的两数各对应的二进位相或。(两位有一个1就为1)
^
参与运算的两数各位对应的二进位相异或,当两对应位的二进位相异时,结果为1。(两位不一样则为1)
<<
左移n位就是乘以2的n次方。”a<<b”是吧a的各二进位全部左移b位,高位丢弃,低位补0。
>>
右移n位就是除以2的n次方。”a>>b”是吧a的各二进位全部右移b位
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package main
import"fmt"
funcmain() { a := 4//二进位 0100 fmt.Printf("a: %b\n", a) b := 8//二进位 1000 fmt.Printf("b: %b\n", b)
fmt.Printf("(a & b): %v\n", (a & b)) fmt.Printf("(a | b): %v\n", (a | b)) fmt.Printf("(a ^ b): %v\n", (a ^ b)) fmt.Printf("(a << 2): %v\n", (a << 2)) fmt.Printf("(a >> 2): %v\n", (a >> 2)) }
运行结果
1 2 3 4 5 6 7
a: 100 b: 1000 (a & b): 0 (a | b): 12 (a ^ b): 12 (a << 2): 16 (a >> 2): 1
赋值运算符
运算符
描述
=
简单的赋值运算符,将一个表达式的值赋给一个左值
+=
相加后再赋值
-=
相减后再赋值
*=
相乘后再赋值
/=
相除后再赋值
%=
求余后再赋值
<<=
左移后赋值
>>=
右移后赋值
&=
按位与后赋值
!=
按位或后赋值
^=
按位异或后赋值
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package main
import"fmt"
funcmain() { var a int a = 100 fmt.Printf("a: %v\n", a) a += 1 fmt.Printf("a: %v\n", a) a -= 1 fmt.Printf("a: %v\n", a) a *= 2 fmt.Printf("a: %v\n", a) a /= 2 fmt.Printf("a: %v\n", a) }