Go语言运算符及优先级

运算符是用于执行运算或逻辑操作的符号。Go语言中的运算符如下表所示。

Go语言运算符说明
运算符 说明
|| 或,二元逻辑运算符,例如 true || false 返回的结果就是 true
&& 与,二元逻辑运算符,例如 true && false 返回的结果就是 false
! 非,一元逻辑运算符,例如 !a 返回 true(a 的值为 false)
== 相等判断,二元逻辑运算符,例如 "string" == "string" 返回的结果是 true
!= 不等判断,二元逻辑运算符,例如 "string" != "String" 返回的结果是 true
< 小于判断,二元逻辑运算符,例如 1 < 2 返回的结果是 true
<= 小于等于判断,二元逻辑运算符,例如 2 <= 2 返回的结果是 true
> 大于判断,二元逻辑运算符,例如 2 > 1 返回的结果是 true
>= 大于等于判断,二元逻辑运算符,例如 2 >= 2 返回的结果是 true
+ 求和操作,二元算术运算符,例如 1 + 1 返回 2
- 求差操作,二元算术运算符,例如 1 - 1 返回 0
* 乘积操作,二元算术运算符,例如 2 * 3返回 6,同时也是一元地址运算符,表示取值操作
/ 求商操作,二元算术运算符,例如 6 / 3 返回 2
按位或操作 二元算术运算符,例如 5 | 11 返回 15
^ 按位异或操作,二元算术运算符,例如 5 ^ 11 返回 14,同时也是一元算术运算符,表示按位取补码操作,
例如 ^5 返回 -6
% 求余操作,二元算术运算符,例如 12 % 5 返回 2
<<  按位左移操作,二元算术运算符,例如 4 << 2 返回 16
>> 按位右移操作,二元算术运算符,例如 4 >> 2 返回 1
& 按位与操作,二元算术运算符,例如 5 & 11 返回 1,同时也是一元地址运算符,表示取址操作,
例如 &str 返回 str 所在的内存地址
&^ 按位消除操作,二元算术运算符,例如 5 &^ 11 返回 4

当一个表达式中有多个运算符时,就会遇到优先级的问题,在Go语言中,一元运算符的优先级高于二元运算符,二元运算符的优先级如下表所示。

二元运算符优先级
运算符 优先级
*   /   %   <<   >>   &   &^ 最高
+   -   |   ^ 较高
==   !=   <   <=   >  >=
&& 较低
||  最低

如果一个表达式中出现相同优先级的运算符,那么根据从左到右的顺序依次操作,当然,所有运算符都受括号的影响,括号内先操作,这和平常的数学运算法则无异,需要注意的是,在Go语言中,++ 和 -- 是语句,不是表达式,没有运算符优先级之说。
func main() {
    n := 0
    p := &n
    // b := n++
    // if n++ == 1 {}
    // ++n
    n++
    *p++
    fmt.Println(n)
}
// 上面注释的都是语法错误的
最后,Go语言不支持运算符重载。

编程帮,一个分享编程知识的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「编程帮」,你已然超越了90%的程序员!

编程帮二维码
微信扫描二维码关注