← Danh sách bài học
Bài 6/20
🔄 Bài 6: Vòng Lặp (Loops)
🎯 Mục tiêu:
- Vòng lặp for cơ bản
- For như while, vòng lặp vô hạn
- break và continue
- Duyệt với range
1. Vòng Lặp For Cơ Bản
Go CHỈ CÓ for, không có while hay do-while.
// Cú pháp: for khởi_tạo; điều_kiện; bước_nhảy { }
for i := 0; i < 5; i++ {
fmt.Println(i)
}
// Output: 0 1 2 3 4
2. For Như While
// Chỉ có điều kiện (giống while)
count := 0
for count < 5 {
fmt.Println(count)
count++
}
3. Vòng Lặp Vô Hạn
// Không có điều kiện = chạy mãi
for {
fmt.Println("Chạy mãi...")
// Phải có break để thoát
break
}
⚠️ Cảnh báo: Vòng lặp vô hạn không có break sẽ làm treo chương trình!
4. Break và Continue
// break - thoát khỏi vòng lặp
for i := 0; i < 10; i++ {
if i == 5 {
break // Dừng khi i = 5
}
fmt.Println(i)
}
// Output: 0 1 2 3 4
// continue - bỏ qua lần lặp hiện tại
for i := 0; i < 5; i++ {
if i == 2 {
continue // Bỏ qua khi i = 2
}
fmt.Println(i)
}
// Output: 0 1 3 4
5. Vòng Lặp Range
range dùng để duyệt qua slice, array, map, string.
// Duyệt slice
numbers := []int{10, 20, 30, 40}
for index, value := range numbers {
fmt.Printf("Index %d: %d\n", index, value)
}
// Chỉ lấy value (bỏ qua index với _)
for _, value := range numbers {
fmt.Println(value)
}
// Duyệt string
for i, char := range "Go" {
fmt.Printf("%d: %c\n", i, char)
}
// 0: G
// 1: o
💡 Mẹo: Dùng
_ (blank identifier) để bỏ qua giá trị không cần.
6. Vòng Lặp Lồng Nhau
// In bảng cửu chương
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
fmt.Printf("%d x %d = %d\t", i, j, i*j)
}
fmt.Println()
}
// 1 x 1 = 1 1 x 2 = 2 1 x 3 = 3
// 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6
// 3 x 1 = 3 3 x 2 = 6 3 x 3 = 9
📝 Tóm Tắt
- Go chỉ có
for, không có while for i := 0; i < n; i++ {}- cơ bảnfor condition {}- như whilefor {}- vô hạnbreakthoát,continuebỏ quarangeduyệt collections