Golang运算符

Go语言内置的运算符有:

1.算术运算符

2.关系运算符

3.逻辑运算符

4.位运算符

5.赋值运算符

算数运算符

运算符 描述
+ 相加
- 相减
* 相乘
/ 相除
% 求余

注意++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main

import "fmt"

func main() {
a := 100
b := 10

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)
}

运行结果

1
2
3
4
5
6
7
x: 110
x: 90
x: 1000
x: 10
x: 0
a: 101
b: 9

关系运算符

运算符 描述
== 检查两个值是否相等,如果相等返回True否侧返回false
!= 检查两个值是否不相等,如果不相等返回True否则返回False
> 检查左边是否大于右边值,如果是返回True否则返回false
>= 检查左边是否大于等于右边值,如果是返回True否则返回false
< 检查左边是否小于右边值,如果是返回True否则返回false
<= 检查左边是否小于等于右边值,如果是返回True否则返回false

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import "fmt"

func main() {
a := 1
b := 2

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)
}

运行结果

1
2
3
4
5
6
x: false
x: true
x: false
x: false
x: true
x: true

逻辑运算符

运算符 描述
&& 逻辑AND运算符。如果两边的操作数都是True,则为True,否则为False
|| 逻辑OR运算符。如果两边的操作数有一个为True,则为True,否则为False
! 逻辑NOT运算符。如果条件为True,则为False,否则为True

实例

1
2
3
4
5
6
7
8
9
10
11
12
package main

import "fmt"

func main() {
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"

func main() {
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"

func main() {
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)
}

运行结果

1
2
3
4
5
a: 100
a: 101
a: 100
a: 200
a: 100