Chuyển đến nội dung chính
Mô-đun 2 · Bài học 2 trong tổng số 57/50 trong khóa học~10 min
Bài học theo mô-đun (2/5)

for: vòng lặp duy nhất

Go có cấu trúc vòng lặp đơn: for. Không while, không do-while, không foreach (sẽ có trong bài học tiếp theo với range). Một từ khóa duy nhất bao gồm tất cả các trường hợp nhờ ba hình thức.

Ba dạng for

Dạng ba mệnh đề cổ điển

Giống hệt với C/Java:

Go
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

i có phạm vi giới hạn ở for. Ba mệnh đề là tùy chọn (bạn có thể bỏ qua bất kỳ cái nào trong số chúng) nhưng ; vẫn còn nếu bạn bỏ qua cái trung gian.

dạng "while": chỉ điều kiện

Trong Go, while chỉ đơn giản là for với một biểu thức bool duy nhất:

Go
i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

Dạng vô hạn

Không có mệnh đề, vòng lặp sẽ không bao giờ kết thúc (trừ khi break/return):

Go
for {
    if exitCondition() {
        break
    }
    doWork()
}

Đó là mẫu cho các vòng lặp xử lý sự kiện, máy chủ, chính sách thử lại.

break, continue và nhãn

break thoát khỏi vòng lặp trong cùng, continue chuyển sang lần lặp tiếp theo:

Go
for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue       // salta i pari
    }
    if i > 7 {
        break          // ferma il ciclo
    }
    fmt.Println(i)     // 1 3 5 7
}

Để thoát khỏi các vòng lặp lồng nhau, có nhãn (hiếm nhưng hữu ích):

Go
Esterno:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i*j == 4 {
            break Esterno   // esce da entrambi
        }
    }
}

Không có toán tử , như trong C

Trong Go bạn không thể viết for i, j := 0, 10; i < j; i, j = i+1, j-1: biểu thức bài đăng không chấp nhận nhiều bài tập. Sử dụng Go cú pháp gán nhiều lần:

Go
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
    fmt.Println(i, j)
}

Thay vào đó, điều này hoạt động vì i, j = i+1, j-1 là một nhiều nhiệm vụ.

Hãy thử nó

tập thể dục#go.m2.l2.e1
Nỗ lực: 0Đang tải…

In các số từ 0 đến 4 với mệnh đề ba cổ điển cho.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

`cho init; điều kiện; post { ... }` — ở đây init là `i := 0`.

Giải pháp khả dụng sau 3 lần thử

tập thể dục#go.m2.l2.e2
Nỗ lực: 0Đang tải…

Tính tổng tất cả các số từ 1 đến 10 bằng cách sử dụng dạng 'while' của for.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

dạng 'while': `for <condition> { ... }`.

Giải pháp khả dụng sau 3 lần thử

Quiz#go.m2.l2.e3
Sẵn sàng

Biểu mẫu nào biểu thị vòng lặp vô hạn trong Go?

Go
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }
Tùy chọn trả lời

Tóm tắt lại

  • Một từ khóa duy nhất for có ba dạng: cổ điển, while, vô hạn.
  • break / continue tùy chọn có nhãn cho các vòng lặp lồng nhau.
  • Dán nhãn Name: trước for, sử dụng tiết kiệm.
  • Không có toán tử ,: sử dụng phép gán bội số i, j = ..., ....