運算符優先順序確定運算式中的分組。這會影響運算式的計算方式。某些運算符比其他運算符具有更高的優先順序; 例如,乘法運算符比加法運算符有更高的優先順序。
例如:x = 7 + 3 * 2
; 這裏,計算結果x
被分配13
,而不是20
,因為運算符 *
具有比+
有更的優先順序,所以它首先乘以3 * 2
,然後加上7
。
這裏,具有最高優先順序的運算符放在表的頂部,具有最低優先順序的運算符出現在底部。 在運算式中,將首先計算較高優先順序運算符。
分類 | 描述 | 關聯性 |
---|---|---|
尾碼 | () [] -> . ++ - - | 左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 右到左 |
乘法 | * / % | 左到右 |
加法 | + - | 左到右 |
移位 | << >> | 左到右 |
關係 | < <= > >= | 左到右 |
相等 | == != | 左到右 |
按位AND | & | 左到右 |
按位XOR | ^ | 左到右 |
按位OR | ![]() |
左到右 |
邏輯AND | && | 左到右 |
邏輯OR | ![]() ![]() |
左到右 |
條件 | ?: | 右到左 |
分配 | = += -= *= /= %=>>= <<= &= ^= ![]() |
右到左 |
逗號 | , | 左到右 |
示例
嘗試以下示例來瞭解Go編程語言中提供的其他運算符:
package main
import "fmt"
func main() {
var a int = 20
var b int = 10
var c int = 15
var d int = 5
var e int;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
fmt.Printf("Value of (a + b) * c / d is : %d\n", e );
e = ((a + b) * c) / d; // (30 * 15 ) / 5
fmt.Printf("Value of ((a + b) * c) / d is : %d\n" , e );
e = (a + b) * (c / d); // (30) * (15/5)
fmt.Printf("Value of (a + b) * (c / d) is : %d\n", e );
e = a + (b * c) / d; // 20 + (150/5)
fmt.Printf("Value of a + (b * c) / d is : %d\n" , e );
}
當編譯和執行上面程式,它產生以下結果:
Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90
Value of a + (b * c) / d is : 50