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:
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:
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):
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:
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):
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:
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ó
In các số từ 0 đến 4 với mệnh đề ba cổ điển cho.
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í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.
Hiển thị gợi ý
dạng 'while': `for <condition> { ... }`.
Giải pháp khả dụng sau 3 lần thử
Biểu mẫu nào biểu thị vòng lặp vô hạn trong Go?
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }Tóm tắt lại
- Một từ khóa duy nhất
forcó ba dạng: cổ điển, while, vô hạn. break/continuetùy chọn có nhãn cho các vòng lặp lồng nhau.- Dán nhãn
Name:trướcfor, 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 = ..., ....