Skip to content

运算符 ​

Go 的运算符和 C 系语言大体一致,少数几个(如自增自减、没有三元运算符)有自己的取舍。这里按类别列出清单和示例代码。

1. 算术运算符 ​

算术运算符做加 +、减 -、乘 *、除 /、取余 %,都是二元运算。

示例代码:

go
package main

import "fmt"

func main() {
    a := 10
    b := 3

    fmt.Println("a + b =", a + b)   // 13
    fmt.Println("a - b =", a - b)   // 7
    fmt.Println("a * b =", a * b)   // 30
    fmt.Println("a / b =", a / b)   // 3
    fmt.Println("a % b =", a % b)   // 1
}

2. 关系运算符 ​

关系运算符比较两个值,结果是布尔值:==、!=、>、<、>=、<=。

示例代码:

go
package main

import "fmt"

func main() {
    a := 10
    b := 20

    fmt.Println("a == b =", a == b)   // false
    fmt.Println("a != b =", a != b)   // true
    fmt.Println("a > b =", a > b)     // false
    fmt.Println("a < b =", a < b)     // true
    fmt.Println("a >= b =", a >= b)   // false
    fmt.Println("a <= b =", a <= b)   // true
}

3. 逻辑运算符 ​

逻辑运算符只有三个:与 &&、或 ||、非 !,操作数是布尔值。

示例代码:

go
package main

import "fmt"

func main() {
    a := true
    b := false

    fmt.Println("a && b =", a && b) // false
    fmt.Println("a || b =", a || b) // true
    fmt.Println("!a =", !a)         // false
}

4. 赋值运算符 ​

除了 = 直接赋值,+=、-=、*=、/=、%= 把运算和赋值合成一步,等价于"先算后存"。

示例代码:

go
package main

import "fmt"

func main() {
    a := 10
    a += 5
    fmt.Println("a += 5 =>", a) // 15

    a -= 3
    fmt.Println("a -= 3 =>", a) // 12

    a *= 2
    fmt.Println("a *= 2 =>", a) // 24

    a /= 4
    fmt.Println("a /= 4 =>", a) // 6

    a %= 5
    fmt.Println("a %= 5 =>", a) // 1
}

5. 位运算符 ​

位运算符直接操作整数的二进制位:按位与 &、按位或 |、按位异或 ^、按位取反 ^、左移 <<、右移 >>。注意 ^ 有两个身份:双目时是异或,单目时是取反。

示例代码:

go
package main

import "fmt"

func main() {
    a := 5    // 0101 in binary
    b := 3    // 0011 in binary

    fmt.Println("a & b =", a & b) // 0001 (1 in decimal)
    fmt.Println("a | b =", a | b) // 0111 (7 in decimal)
    fmt.Println("a ^ b =", a ^ b) // 0110 (6 in decimal)
    fmt.Println("^a =", ^a)       // 1010 (inverted bits of 5)
    fmt.Println("a << 1 =", a << 1) // 1010 (10 in decimal)
    fmt.Println("a >> 1 =", a >> 1) // 0010 (2 in decimal)
}

6. 条件运算符(Go 不直接支持三元运算符) ​

Go 语言没有直接的条件运算符(如 ? :),但可以使用 if 语句来实现类似的功能。

示例代码:

go
package main

import "fmt"

func main() {
    a := 10
    b := 20
    max := a

    if b > a {
        max = b
    }

    fmt.Println("Max =", max) // 20
}

7. 自增和自减运算符 ​

自增 ++ 和自减 -- 把变量的值加一或减一。它们是语句而不是表达式,没有 ++a 这种前置写法,也不能嵌进别的表达式里。

示例代码:

go
package main

import "fmt"

func main() {
    a := 10
    a++
    fmt.Println("a++ =", a) // 11

    a--
    fmt.Println("a-- =", a) // 10
}

总结 ​

上面七类里,Go 与其他语言差别最明显的是两处:整数除法 / 直接截断小数(10 / 3 得 3),以及没有三元运算符,条件取值只能写 if。自增自减只能单独成句,这也是为什么 for i := 0; i < n; i++ 里它们放在后置位置。

参考资料 ​

同层页面 ​

相关页面 ​

Hello Golang