Go 语言学习之运算符


01
算术运算符
算术运算符有加号(+)、减号(-)、乘号(*)、除号(/)、取余(%),我们声明两个变量 a 和 b,并分别赋值 10 和 5,通过代码,我们演示算术运算符的用法。

func main() {

  a := 10

  b := 5

  fmt.Println("a + b = ", a+b)

  fmt.Println("a - b = ", a-b)

  fmt.Println("a * b = ", a*b)

  fmt.Println("a / b = ", a/b)

  fmt.Println("a % b = ", a%b)

}

02
++ 和 —
自增和自减不是运算符,只能作为独立语句使用,不能用于表达式,不能放在变量名前面使用。通过代码,我们演示 ++ 和 — 的用法。

func main() {

  a := 10

  b := 5

  a++

  b--

  fmt.Println("a++:", a)

  fmt.Println("b--:", b)

03
赋值运算符
为了简化表达式,与大多数语言相同,Go 语言也提供了一些赋值运算符,有等号(=)、加等(+=)、减等(-=)、乘等(*=)、除等(/*)、取余等(%=),通过代码,我们演示赋值运算符的用法。

func main() {

  aa := 50

  aa += 10

  fmt.Println("aa = ", aa)


bb := 50 bb -= 10 fmt.Println("bb = ", bb)
cc := 50 cc *= 10 fmt.Println("cc = ", cc)
dd := 50 dd /= 10 fmt.Println("dd = ", dd)
ff := 50 ff %= 10 fmt.Println("ff = ", ff) }

04
关系运算符
关系运算符主要用于流程控制语句中,在 Go 语言中,关系运算符有大于(>)、小于(=)、小于等于(<=)、等于等于(==)和不等于(!=),通过代码,我们演示关系运算符的用法。

func main() {

  if a > 5 && b > 5 {

    fmt.Println("a > 5 且 b > 5")

  }


if a > 5 || b > 5 { fmt.Println("a > 5 或 b > 5") }
if a > 5 && b >= 5 { fmt.Println("a > 5 且 b >= 5") }
if a == b { fmt.Println("a == b") }
if a != b { fmt.Println("a != b") }
boolean := false if !boolean { fmt.Println("非假既真") } }

05
逻辑运算符
逻辑运算符,同样主要用于流程控制语句中,在 Go 语言中,逻辑运算符有且(&&)、或(||)、非(!),代码演示同上面的关系运算符代码。
06
& 和 *

取地址符(&

和指针运算符
(*
),不是所有对象都能进行取地址操作,
但是变量

是能正确返回
地址。
指针
运算符在等号左边
时,
可以更新目标对象,
在等号右边时,
可以获取目标对象。通过代码,我们演示取地址符和指针运算符的用法。

func main() {

  x := 50

  y := &x

  *y++

  z := *y

  fmt.Println("y = ", y)

  fmt.Println("x = ", x)

  fmt.Println("z = ", z)

}

07
位运算符
位运算符是对整数在内存中的二进制位进行操作。因为篇幅原因,本文我们不对位运算符做过多的介绍,在工作中,个人建议尽量少用或不用位运算符,原因是代码可读性不好。如果你对位运算符感兴趣,可自行查阅相关资料。
08
优先级
最后,我们来介绍一下运算符的优先级,一元运算符的优先级最高,二元运算符的优先级分五个级别,从高往低分别是:

>>
<=

相同优先级的二元运算符,从左往右依次计算。此外,我们还可以使用小括号提升某个表达式中运算符的优先级。
完整代码:


输出结果:

a + b =  15

a - b =  5

a * b =  50

a / b =  2

a % b =  0

a++: 11

b--: 4

aa =  60

bb =  40

cc =  500

dd =  5

ff =  0

a > 5 或 b > 5

a != b

非假既真

y =  0xc0000b4070

x =  51

z =  51