第 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 简单:一元 > 乘除/位运算 > 加减/位运算 > 比较 > && > ||。多用括号让阅读者不必查表。