go语言学习 第 3 章:运算符

第 3 章:运算符

在 Go 语言中,运算符是用于执行特定操作的符号。它们可以用于进行数学计算、比较操作、逻辑判断等。本章将详细介绍 Go 语言中的各种运算符及其使用方法。

一、算术运算符

算术运算符用于执行基本的数学运算。Go 语言提供了以下算术运算符:

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取模(求余数)
  • ++:自增
  • --:自减

(一)基本算术运算

以下是一些使用算术运算符的例子:

go 复制代码
package main

import "fmt"

func main() {
    var a int = 10
    var b int = 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) // 取模

    a++
    fmt.Println("a++ =", a) // 自增

    b--
    fmt.Println("b-- =", b) // 自减
}

(二)浮点数运算

对于浮点数,算术运算符同样适用:

go 复制代码
package main

import "fmt"

func main() {
    var a float64 = 10.5
    var b float64 = 3.2

    fmt.Println("a + b =", a + b) // 加法
    fmt.Println("a - b =", a - b) // 减法
    fmt.Println("a * b =", a * b) // 乘法
    fmt.Println("a / b =", a / b) // 除法
}

(三)取模运算

取模运算符 % 用于获取两个整数相除后的余数。它只能用于整数运算:

go 复制代码
package main

import "fmt"

func main() {
    var a int = 10
    var b int = 3

    fmt.Println("a % b =", a % b) // 取模
}

二、赋值运算符

赋值运算符用于将值赋给变量。Go 语言提供了多种赋值运算符:

  • =:简单赋值
  • +=:加法赋值
  • -=:减法赋值
  • *=:乘法赋值
  • /=:除法赋值
  • %=:取模赋值

(一)简单赋值

go 复制代码
package main

import "fmt"

func main() {
    var a int = 10
    fmt.Println("a =", a)
}

(二)复合赋值

复合赋值运算符可以将运算和赋值操作结合在一起:

go 复制代码
package main

import "fmt"

func main() {
    var a int = 10
    a += 5 // 等价于 a = a + 5
    fmt.Println("a += 5 =", a)

    a -= 3 // 等价于 a = a - 3
    fmt.Println("a -= 3 =", a)

    a *= 2 // 等价于 a = a * 2
    fmt.Println("a *= 2 =", a)

    a /= 4 // 等价于 a = a / 4
    fmt.Println("a /= 4 =", a)

    a %= 3 // 等价于 a = a % 3
    fmt.Println("a %= 3 =", a)
}

三、关系运算符

关系运算符用于比较两个值之间的关系。它们返回布尔值 truefalse。Go 语言提供了以下关系运算符:

  • ==:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于

(一)比较操作

go 复制代码
package main

import "fmt"

func main() {
    var a int = 10
    var b int = 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) // 大于等于
    fmt.Println("a <= b =", a <= b) // 小于等于
}

四、逻辑运算符

逻辑运算符用于组合多个布尔表达式。Go 语言提供了以下逻辑运算符:

  • &&:逻辑与(短路与)
  • ||:逻辑或(短路或)
  • !:逻辑非

(一)逻辑与

逻辑与运算符 && 用于判断两个布尔表达式是否都为 true。如果两个表达式都为 true,则返回 true,否则返回 false

go 复制代码
package main

import "fmt"

func main() {
    var a bool = true
    var b bool = false

    fmt.Println("a && b =", a && b) // 逻辑与
}

(二)逻辑或

逻辑或运算符 || 用于判断两个布尔表达式中是否至少有一个为 true。如果至少有一个表达式为 true,则返回 true,否则返回 false

go 复制代码
package main

import "fmt"

func main() {
    var a bool = true
    var b bool = false

    fmt.Println("a || b =", a || b) // 逻辑或
}

(三)逻辑非

逻辑非运算符 ! 用于取布尔表达式的反值。如果表达式为 true,则返回 false,反之亦然:

go 复制代码
package main

import "fmt"

func main() {
    var a bool = true

    fmt.Println("!a =", !a) // 逻辑非
}

五、位运算符

位运算符用于对整数的二进制位进行操作。Go 语言提供了以下位运算符:

  • &:按位与
  • |:按位或
  • ^:按位异或
  • <<:左移
  • >>:右移
  • &^:按位清零(a &^ b 等价于 a & (^b)

(一)按位与

按位与运算符 & 用于对两个整数的二进制位进行逐位与操作。只有当两个位都为 1 时,结果才为 1,否则为 0:

go 复制代码
package main

import "fmt"

func main() {
    var a int = 5 // 二进制:0101
    var b int = 3 // 二进制:0011

    fmt.Println("a & b =", a & b) // 按位与
}

(二)按位或

按位或运算符 | 用于对两个整数的二进制位进行逐位或操作。只要有一个位为 1,结果就为 1,否则为 0:

go 复制代码
package main

import "fmt"

func main() {
    var a int = 5 // 二进制:0101
    var b int = 3 // 二进制:0011

    fmt.Println("a | b =", a | b) // 按位或
}

(三)按位异或

按位异或运算符 ^ 用于对两个整数的二进制位进行逐位异或操作。只有当两个位不同时,结果才为 1,否则为 0:

go 复制代码
package main

import "fmt"

func main() {
    var a int = 5 // 二进制:0101
    var b int = 3 // 二进制:0011

    fmt.Println("a ^ b =", a ^ b) // 按位异或
}

(四)左移和右移

左移运算符 << 和右移运算符 >> 用于对整数的二进制位进行移位操作。左移会将位向左移动指定的位数,右移则相反:

go 复制代码
package main

import "fmt"

func main() {
    var a int = 5 // 二进制:0101

    fmt.Println("a << 1 =", a << 1) //