第九回:Go 语言运算符

唐家霸王枪法(各类运算)
唐伯虎
唐伯虎: 既然进了华府,光会背书不行,还得会算账!今天教你几套唐家枪法(运算符),用来处理数据。

➕ 基础枪法 (算术运算)

加减乘除,童叟无欺。

a := 10
b := 3

fmt.Println(a + b) // 13
fmt.Println(a - b) // 7
fmt.Println(a * b) // 30
fmt.Println(a / b) // 3 (注意:整数相除还是整数)
fmt.Println(a % b) // 1 (取余数,就像分赃分不匀剩下的)
华夫人
华夫人: 慢着!Go 语言里,++-- 只能单独一行,不能放在表达式里!也没有 ++i 这种写法!
i := 1
i++        // 正确
// j := i++ // 错误!会被打断腿
// ++i      // 错误!C语言的陋习要改掉

⚖️ 心法口诀 (逻辑与关系)

🧬 绝世武功 (位运算)

这是高手才用的招式,直接操作二进制位。

运算符 描述 示例 (A=60, B=13)
& 按位与 (都为1才为1) A & B = 12
| 按位或 (有一个1就为1) A | B = 61
^ 按位异或 (不同为1,相同为0) A ^ B = 49
<< 左移 (相当于乘以2的n次方) A << 2 = 240
>> 右移 (相当于除以2的n次方) A >> 2 = 15
&^ 位清空 (Bit Clear) A &^ B (把B中是1的位,在A中清零)

🎯 练功房(巧算账)

不用乘法,怎么算 x * 2

package main
import "fmt"

func main() {
    x := 10
    // 请用位运算实现 x * 2
    result := ______
    fmt.Println(result)
}

任务: 填空。

答案: x << 1

解析: 左移一位相当于乘以 2,右移一位相当于除以 2。这在底层运算中速度极快,就像唐家霸王枪一样快!