运算符
2022-02-05 大约 2 分钟
运算符是一种特殊的符号,用以表示数据的运算,赋值和比较。
# 算术运算符
对数值类型的变量进行运算,比如:加减乘除。包含:
+ , -, *, /, %, ++, --
package main
import "fmt"
func main() {
// 正整数
var n1 int = +10
fmt.Println(n1) // 10
// 数值相加
var n2 int = 4 + 7
fmt.Println(n2) // 11
// 字符串相加
var s1 string = "abc" + "def"
fmt.Println(s1) // abcdef
// 两个int类型数据运算,结果一定为整数类型
fmt.Println(10 / 3) // 3
// 浮点类型参与运算,结果为浮点类型
fmt.Println(10.0 / 3) // 3.3333333333333335
// 取余
fmt.Println(10 % 3) // 1
// ++自增操作
// go语言里,++,--操作非常简单,只能单独使用,不能参于运算
// go语言里,++,--只能在变量的后面,不能写在变量的前面(--a,++a属于错误写法)
var a int = 10
a++
fmt.Println(a) // 11
}
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
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量。包含:
=,+=,-=,*=,/=,%=
package main
import "fmt"
func main() {
// = 把右侧的运算结果赋值给左侧
var num2 int = (10+20)%3 + 3 - 7
fmt.Println(num2) // -4
// 等价于 num2 = num2 + 20
num2 += 20
fmt.Println(num2) // 16
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 关系运算符
关系运算符的结果都是bool型,也就是要么是false,要么是true。包含:
==,!=,>,<,>=,<=
package main
import "fmt"
func main() {
var age int = 18
var age2 int = 20
fmt.Println(age > age2) // false
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 逻辑运算符
逻辑运算符:逻辑与、逻辑或、逻辑非,包含:
&&,||,!
package main
import "fmt"
func main() {
var bool1 bool = false
var bool2 bool = true
fmt.Println(bool2 && bool1) // false
fmt.Println(bool2 || bool1) // true
fmt.Println(!bool2) // false
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 位运算符
包含:
&,|,^
# 其他运算符
包含:
&,*
参考指针
# 优先级
go语言有几十种运算符,被分成十几个级别,有的运算符优先级不同,有的运算符优先级相同。
优先级 | 分类 | 运算符 | 结合性 |
---|---|---|---|
1 | 逗号运算符 | , | 从左到右 |
2 | 赋值运算符 | =、+=、-=、*=、/=、%=、>=、<=、&=、^=、|= | 从右到左 |
3 | 逻辑或 | || | 从左到右 |
4 | 逻辑与 | && | 从左到右 |
5 | 按位或 | | | 从左到右 |
6 | 按位异或 | ^ | 从左到右 |
7 | 按位与 | & | 从左到右 |
8 | 相等/不等 | ==、!= | 从左到右 |
9 | 关系运算符 | <、<=、>、>= | 从左到右 |
10 | 位移运算符 | <<、>> | 从左到右 |
11 | 加法/减法 | +、- | 从左到右 |
12 | 乘法/除法/取余 | *、/、% | 从左到右 |
13 | 单目运算符 | !、*(指针)、&、++、--、+、- | 从右到左 |
14 | 后缀运算符 | ()、[]、-> | 从左到右 |
为了提高优先级可以加括号
()