Lesson 10 — Vòng lặp for · Visualization

Ba module tương tác để hiểu vòng lặp Go: (1) animate từng iteration trên slice tự nhập, (2) so sánh range vs C-style trên UTF-8 string, (3) labeled break trong matrix 2D.

1. Loop Visualizer — chạy từng vòng

Nhập slice và chọn pattern. Bấm ▶ Step để chạy từng vòng, ▶▶ Play để auto, ↺ Reset để bắt đầu lại.

Bấm ▶ Step để bắt đầu.

2. range vs C-style trên UTF-8

So sánh hai cách duyệt cùng một string. C-style for i := 0; i < len(s); i++ đọc byte (sai cho Unicode). range đọc rune đúng codepoint.

Bytes (mỗi cell = 1 byte trong slice gốc):

Runes (mỗi cell = 1 codepoint Unicode):

C-style — đọc byte

for i := 0; i < len(s); i++ {
    fmt.Printf("%d → byte %d\n", i, s[i])
}

range — đọc rune

for i, r := range s {
    fmt.Printf("%d → rune %c U+%04X\n", i, r, r)
}

3. Labeled break — tìm target trong matrix 4×4

Chọn target. Animate scan từng cell theo thứ tự (i, j). Khi gặp target, break outer thoát cả hai loop — các cell còn lại không được duyệt.

// Khi tìm thấy → break outer thoát CẢ HAI loop
outer:
for i := range matrix {
    for j := range matrix[i] {
        if matrix[i][j] == target {
            foundRow, foundCol = i, j
            break outer
        }
    }
}
Bấm ▶ Chạy scan.

Tóm tắt