跟我一起来学golang之《运算符》| 8月更文挑战

1,349 阅读2分钟

这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战

什么是运算符?

运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。golang的运算符与大部分语言运算符的语义都是相同的。

算术运算符

+ - * / %(余) ++ --

注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。

代码示例:

func main() {
 a, b := 100,200
 fmt.Printf("a 加 b = %d\n", a + b)
 fmt.Printf("a 减 b = %d\n", a - b)
 fmt.Printf("a 乘 b = %d\n", a * b)
 fmt.Printf("a 除 b = %d\n", a / b)
}

关系运算符

== != > < >= <=
==检查两个值是否相等,如果相等返回 True 否则返回 False。
!=检查两个值是否不相等,如果不相等返回 True 否则返回 False。
检查左边值是否大于右边值,如果是返回 True 否则返回 False。
>=检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
<检查左边值是否小于右边值,如果是返回 True 否则返回 False。
<=检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。

代码示例:

func main() {
    a, b := 100, 200
    //fmt.Println("a == b?", a == b)  // a == b? false
    //fmt.Println("a != b?", a != b)  // a != b? true
    //fmt.Println("a > b?", a > b )  // a > b? true
    //fmt.Println("a >= b?", a >= b)  // a >= b? false
    //fmt.Println("a < b?", a < b )  // a >= b? true
    //fmt.Println("a <= b?", a <= b ) // a <= b? true
}

逻辑运算符

运算符描述
&&所谓逻辑与运算符。如果两个操作数都非零,则条件变为真
||逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。
!所谓逻辑非运算符。使用反转操作数的逻辑状态。如果条件为真,那么逻辑非操后结果为假
func main() {
    a, b := true, false
    fmt.Println("a && b ?", a && b) // a && b ? false
    fmt.Println("a || b ?", a || b) // a || b ? true
    fmt.Println(" !a ?", !a)  // !a ? false
    fmt.Println(" !b ?", !b)  // !b ? true
}

位运算符

运算符描述
&参与运算的两数各对应的二进位相与。 (两位均为1才为1)
|参与运算的两数各对应的二进位相或。 (两位有一个为1就为1)
参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (两位不一样则为1)
<<左移n位就是乘以2的n次方。 “a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。
>>右移n位就是除以2的n次方。 “a>>b”是把a的各二进位全部右移b位。

赋值运算符

运算符描述示例
=简单的赋值操作符,分配值从右边的操作数左侧的操作数C = A + B 将分配A + B的值到C
+=相加并赋值运算符,它增加了右操作数左操作数和分配结果左操作数C += A 相当于 C = C + A
-=减和赋值运算符,它减去右操作数从左侧的操作数和分配结果左操作数C -= A 相当于 C = C - A
*=乘法和赋值运算符,它乘以右边的操作数与左操作数和分配结果左操作数C *= A 相当于 C = C * A
/=除法赋值运算符,它把左操作数与右操作数和分配结果左操作数C /= A 相当于 C = C / A
%=模量和赋值运算符,它需要使用两个操作数的模量和分配结果左操作数C %= A 相当于 C = C % A
<<=左移位并赋值运算符C <<= 2 相同于 C = C << 2
=向右移位并赋值运算符C >>= 2 相同于 C = C >> 2
&=按位与赋值运算符C &= 2 相同于 C = C & 2
^=按位异或并赋值运算符C ^= 2 相同于 C = C ^ 2

运算符优先级

有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

优先级运算符
7~ ! ++ --
6* / % << >> & &^
5+ - ^
4== != < <= >= >
3<-
2&&
1\

当然,你可以通过使用括号来临时提升某个表达式的整体运算优先级。