golang

算术运算符 Link to heading

二元运算符 Link to heading

字面形式 名称 解释
+ 加法 两个运算数的类型必须相同并且为基本数值类型
- 减法 两个运算数的类型必须相同并且为基本数值类型
* 乘法 两个运算数的类型必须相同并且为基本数值类型
/ 除法 两个运算数的类型必须相同并且为基本数值类型
% 取余 两个运算数的类型必须相同并且为基本整数数值类型

位运算符 Link to heading

字面形式 名称
& 位与
^ 异或
&^ 清位
« 左移位
» 右移位

一元运算符 Link to heading

字面形式 名称 解释
+ 取正数 +n等价于0 + n
- 取负数 -n等价于0 - n
^ 位反

op=运算符 Link to heading

var a, b int8 = 3, 5
a += b
println(a) // 8
a *= a
println(a) // 64
a /= b
println(a) // 12
a %= b
println(a) // 2
b <<= uint(a)
println(b) // 20

自增/自减运算符 Link to heading

go语言自增和自减运算符没有返回值

package main

func main() {
	a, b, c := 12, 1.2, 1+2i
	a++ // ok. <=> a += 1 <=> a = a + 1
	b-- // ok. <=> b -= 1 <=> b = b - 1
	c++ // ok.

	// 下面这些行编译不通过。
	/*
	_ = a++
	_ = b--
	_ = c++
	++a
	--b
	++c
	*/
}

字符串连接运算符 Link to heading

字面形式 名称
+ 字符串衔接
+= 字符串衔接
println("Go" + "lang") // Golang
var a = "Go"
a += "lang"
println(a) // Golang

布尔运算符 Link to heading

参与运算值必须是布尔类型

字面形式 名称
&&
||
!
// x    y       x && y   x || y   !x      !y
true    true    true     true     false   false
true    false   false    true     false   true
false   true    false    true     true    false
false   false   false    false    true    true

比较运算符 Link to heading

字面形式 名称
== 等于
!= 不等于
< 小于
<= 小于或等于
> 大于
>= 大于或等于

运算符优先级 Link to heading

同一行中的操作符的优先级是一样的。优先级逐行递减。

*   /   %   <<  >>  &   &^
+   -   |   ^
==  !=  <   <=  >   >=
&&
||
// 优先级一样,从左到右计算
12 / 2 * 3

// 先计算4*4,再计算12+16
12 + 4 * 4