4.6. 运算符优先级
运算符优先级
在Go语言中,一元运算符(一些只需要一个操作数的运算符称为一元运算符(或单目运算符)。)拥有最高的优先级,二元运算符的运算方向均是从左至右。
下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:
如下图所示:
优先级 | 运算符 |
---|---|
7 | *^ ! * |
6 | * / % << >>&&^ |
5 | **+ - |
4 | == != < <= >= > |
3 | <- |
2 | && |
1 | ** |
例子:取地址运算符: 通过指针间接修改变量的值
a := 10
//& 取地址运算符
fmt.Println(&a)
//* 取值运算符 p 指针变量
p := &a
//通过指针间接修改变量的值
*p = 123
fmt.Println(*p)
fmt.Println(a)
括号运算符 最高级
()
数组切片下标
[]
结构体.成员 包.函数 对象.方法
.
位运算 & | ^ ~ 位移运算 >> <<
位运算 & | ^ ~ 位移运算 >> <<
通信
>-
单目运算符
!(逻辑非) ++(自增) –(自减) &(取地址) *(取值)
双目运算符
*
(乘) /
(除)%
(取余)
+
(加) -
(减)
(大于) <(小于) >=(大于等于) <=(小于等于) ==(相等于) !=(不等于)
&
(逻辑与)
|
逻辑或)
+= -= *= /= %=
(赋值运算符)