Lesson 16 — Pointer Visualization

Ba module tương tác: (1) Pointer Playground — vẽ memory cell và animate &, *p, gán qua pointer, nil panic. (2) Pass-by-value vs pointer — animate stack frame và xem khi nào mutate "lan" ra caller. (3) Escape analysis quiz — 6 hàm Go, đoán biến nào escape ra heap.

1. Pointer Playground — memory cell live

Hai biến xp. xint, p*int trỏ tới x (hoặc nil). Bấm các nút để mô phỏng:

x chưa khởi tạo. Bấm "x = 42" để bắt đầu.
Quan sát: p chỉ chứa địa chỉ (8 byte), không lưu giá trị. Khi gán *p = 99, ô memory của x đổi giá trị — bạn thấy cả 2 cell cùng cập nhật. Khi p = nil, mũi tên biến mất; bấm "đọc *p" lúc đó → panic giả lập.

2. Pass-by-value vs Pass-by-pointer — stack frame

Chọn 1 trong 4 kịch bản, bấm "Step ▶" để chạy từng bước. Bạn sẽ thấy 2 stack frame (caller / callee), giá trị copy, và liệu mutate có "lan" ra caller hay không.

📞 Frame caller (main)

🔧 Frame callee (f)

3. Escape Analysis Quiz — biến nào ra heap?

6 hàm Go. Với mỗi hàm, chọn "Escape ra heap" hoặc "Stack OK". Sau khi trả lời, app sẽ giải thích và verify bằng output thực của go build -gcflags="-m".

Tiến độ: 0 / 6