首页 > 文章列表 > Go 语言运算符的优先级有哪些?

Go 语言运算符的优先级有哪些?

go语言 运算符 运算符优先级
467 2024-01-21

在 Go 语言中,有很多种运算符,这些运算符的计算顺序是按照一定的规则来确定的,这就是所谓的运算符优先级,它能够决定程序执行顺序。本文将介绍 Go 语言中的运算符优先级。

一、基础运算符

  1. 算术运算符

算术运算符包括加(+)、减(-)、乘(*)、除(/)和取余(%)五种,其中优先级从高到低依次为:

  1. 括号(())
  2. 取反(-x)
  3. 乘法、除法和取余(*、/、%)
  4. 加法、减法(+、-)

举个例子:

a := 10 + 202 // 先乘法,再加法,等价于 a := 10 + (202) = 50
b := (10 + 20) 2 // 使用括号,先加法,再乘法,等价于 b := (10+20) 2 = 60

  1. 关系运算符

关系运算符包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)六种,其中优先级从高到低依次为:

  1. 括号(())
  2. 大于、小于、大于等于、小于等于(>、<、>=、<=)
  3. 等于、不等于(==、!=)

举个例子:

a := 10 > 5 && 5 < 3 || 4 > 2 // 先执行 &&,再执行 ||,等价于 a := (10 > 5 && 5 < 3) || (4 > 2) = true

  1. 逻辑运算符

逻辑运算符包括取反(!)、与(&&)和或(||)三种,其中优先级从高到低依次为:

  1. 括号(())
  2. 取反(!)
  3. 与(&&)
  4. 或(||)

举个例子:

a := true || false && !true // 先执行 !,再执行 &&,最后执行 ||,等价于 a := true || false = true

二、位运算符

位运算符包括按位与(&)、按位或(|)、异或(^)、左移(<<)和右移(>>)五种,其中优先级从高到低依次为:

  1. 括号(())
  2. 左移、右移(<<、>>)
  3. 按位与(&)
  4. 按位异或(^)
  5. 按位或(|)

举个例子:

a := 1 << 2 & 3 | 4 ^ 5 >> 2 // 先执行 <<、>>,再执行 &、^,最后执行 |,等价于 a := 0 | 1 = 1

三、赋值运算符

赋值运算符包括等于(=)、加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)、取余等于(%=)、左移等于(<<=)、右移等于(>>=)、按位与等于(&=)、按位或等于(|=)和按位异或等于(^=)十一种,其中优先级从低到高依次为:

  1. 按位或等于(|=)
  2. 按位异或等于(^=)
  3. 按位与等于(&=)
  4. 左移等于(<<=)
  5. 右移等于(>>=)
  6. 取余等于(%=)
  7. 除等于(/=)
  8. 乘等于(*=)
  9. 减等于(-=)
  10. 加等于(+=)
  11. 等于(=)

举个例子:

a, b := 1, 2
a += b + 3 4 // 先执行乘法,再执行加法,最后执行 +=,等价于 a = a + (b + 3 4) = 15

通过了解 Go 语言中各种运算符的优先级,我们可以更加准确地写出程序,并且更好地理解程序的计算过程。