Lesson 09 — Điều kiện: if & switch
Ba module tương tác để: (1) thấy cách early return giết pyramid of doom, (2) trace flow của switch từng case, (3) chơi với type switch trên interface{}.
Module 1 — Refactor "Pyramid of Doom" thành Early Return
Hàm chargeOrder kiểm tra 4 điều kiện trước khi trừ tiền. Bên trái: viết nested kiểu C/Java. Bên phải: rỗng — bấm Refactor để xem phiên bản early return.
😵 Trước: pyramid 4 tầng
⏳ Sau: (chưa refactor)
Bấm Refactor để thấy cách chuyển 4 tầng nested thành chuỗi guard độc lập, mỗi guard return ngay. Happy path tụt về indent 0.
Module 2 — Switch Flow Visualizer
Nhập giá trị, xem Go chạy qua từng case. Vàng = đang kiểm tra, xanh = matched (dừng), xám mờ = không xét vì đã match. Có 2 mode:
switch <value>
switch (không expression)
(chưa chạy)
Mode 1 (switch value): match tháng → trả về mùa. Demo cả multi-value (
Mode 2 (no expression): tương đương if-elif chain. Mỗi case là 1 condition bool.
case 12, 1, 2:) và default.Mode 2 (no expression): tương đương if-elif chain. Mỗi case là 1 condition bool.
Module 3 — Type Switch Playground
Chọn giá trị, xem switch v := x.(type) chạy qua từng case theo kiểu thực tế của x.
x = (chưa chọn)
(chưa chạy)
Trong mỗi case, biến
v có ĐÚNG kiểu của case đó — không cần assert lại. Ví dụ trong case int: thì v là int, dùng được v*2 trực tiếp. Đây là preview cho Interface (Tier 2 L01).