Lesson 08 — Toán tử & Biểu thức
Ba module tương tác để cảm giác được: (1) bitwise calculator hiển thị từng bit, (2) precedence explorer vẽ thứ tự eval, (3) type conversion checker nói rõ Go có yêu cầu convert không.
Module 1 — Bitwise Calculator
Nhập 2 số (0–255, đủ 8 bit để dễ nhìn), chọn toán tử, xem từng bit thay đổi thế nào. Pattern thực tế: Linux file permission, network flag, bitmap index.
Pattern Linux permission (số có nghĩa):
Module 2 — Precedence Explorer
Chọn một biểu thức Go, viz sẽ vẽ thứ tự eval theo precedence Go dạng bước-bước, kèm bảng 5 mức Go.
Bảng 5 mức precedence Go
| Mức | Toán tử | Tên |
|---|---|---|
| 5 (cao) | +x -x !x ^x *p &x <-ch | unary |
| 4 | * / % << >> & &^ | mul-class |
| 3 | + - | ^ | add-class |
| 2 | == != < <= > >= | comparison |
| 1 | && | logical AND |
| 0 (thấp) | || | logical OR |
Module 3 — Type Conversion Checker
Chọn 2 kiểu Go bất kỳ. Viz sẽ nói: có cần convert explicit không, conversion có lossy không, code đúng phải viết thế nào.
+
Nhắc nhanh: Go KHÔNG tự convert kiểu trong biểu thức (kể cả
int ↔ int64). Phải dùng cú pháp T(x). Untyped constant (literal chưa khai báo kiểu) là ngoại lệ, fit theo context.