V
Vel·ToolKit
简洁 · 高效 · 即开即用
ZH
第 3 章 / 共 20 章

运算符

算术 / 比较 / 逻辑 / 位运算 / 赋值

算术运算符

  • + - * /:常规四则
  • %:取余(仅整型)
  • ++ / --:自增自减,只能作为语句使用,不是表达式
package main

import "fmt"

func main() {
    a, b := 7, 3
    fmt.Println(a/b) // 2  (整除)
    fmt.Println(a%b) // 1
    a++              // 合法
    fmt.Println(a)
    // fmt.Println(a++) // 编译错误:a++ 不是表达式
}

比较与逻辑

== != < <= > >= 返回 bool;逻辑运算符 && || !,短路求值。

package main

import "fmt"

func main() {
    age, name := 20, "Alice"
    ok := age >= 18 && name != ""
    if !ok {
        fmt.Println("invalid")
        return
    }
    fmt.Println("ok:", name)
}

位运算

  • & 按位与、| 按位或、^ 异或
  • &^ 位清空(AND NOT)
  • << 左移、>> 右移
package main

import "fmt"

func main() {
    flags := 0b1010
    fmt.Printf("%04b\n", flags|0b0101)  // 1111
    fmt.Printf("%04b\n", flags&^0b0010) // 1000
    fmt.Printf("%04b\n", flags<<1)      // 10100
}

复合赋值

package main

import "fmt"

func main() {
    x := 10
    x += 5  // 15
    x *= 2  // 30
    x >>= 1 // 15
    fmt.Println(x)
}

运算符优先级

Go 的优先级比 C 简单:一元 > 乘除/位运算 > 加减/位运算 > 比较 > && > ||。多用括号让阅读者不必查表。