Khóa học go

Vòng Lặp trong Go

0 phút đọc

Vòng lặp là một cấu trúc điều khiển quan trọng trong lập trình, cho phép thực hiện một khối mã lệnh nhiều lần dựa trên một điều kiện nhất định. Trong Go, vòng lặp chủ yếu được thực hiện thông qua từ khóa for. Bài viết này sẽ cung cấp một cái nhìn tổng quan chi tiết về các loại vòng lặp trong Go, bao gồm cú pháp, cách sử dụng, và các ví dụ minh họa cụ thể.

Cú Pháp của Vòng Lặp for

Cú pháp cơ bản của vòng lặp for trong Go như sau:

go Copy
for initialization; condition; post {
    // khối mã lệnh
}

Trong đó:

  • initialization: Khởi tạo biến điều khiển vòng lặp, được thực hiện một lần duy nhất trước khi vòng lặp bắt đầu.
  • condition: Điều kiện kiểm tra, được đánh giá trước mỗi lần lặp. Nếu điều kiện là true, khối mã lệnh sẽ được thực hiện. Nếu điều kiện là false, vòng lặp sẽ kết thúc.
  • post: Biểu thức được thực hiện sau mỗi lần lặp.

Ví Dụ Cơ Bản

Vòng Lặp Đếm Lên

go Copy
package main

import "fmt"

func main() {
    for i := 1; i <= 5; i++ {
        fmt.Println(i)
    }
}

Kết quả:

Copy
1
2
3
4
5

Trong ví dụ này, vòng lặp for đếm từ 1 đến 5 và in ra các giá trị.

Vòng Lặp Đếm Xuống

go Copy
package main

import "fmt"

func main() {
    for i := 5; i >= 1; i-- {
        fmt.Println(i)
    }
}

Kết quả:

Copy
5
4
3
2
1

Trong ví dụ này, vòng lặp for đếm ngược từ 5 đến 1 và in ra các giá trị.

Vòng Lặp Không Có Biểu Thức

Trong Go, bạn có thể bỏ qua các biểu thức initialization, condition, và post để tạo ra các loại vòng lặp khác nhau.

Vòng Lặp Vô Hạn

go Copy
package main

import "fmt"

func main() {
    for {
        fmt.Println("This is an infinite loop")
    }
}

Trong ví dụ này, vòng lặp for sẽ chạy vô hạn vì không có điều kiện dừng.

Vòng Lặp Kiểu while

go Copy
package main

import "fmt"

func main() {
    i := 1
    for i <= 5 {
        fmt.Println(i)
        i++
    }
}

Kết quả:

Copy
1
2
3
4
5

Trong ví dụ này, vòng lặp for hoạt động như một vòng lặp while, tiếp tục lặp cho đến khi điều kiện i <= 5 trở thành false.

Vòng Lặp Sử Dụng range

Từ khóa range trong Go được sử dụng để lặp qua các phần tử của một mảng, slice, map, hoặc chuỗi.

Vòng Lặp range với Mảng

go Copy
package main

import "fmt"

func main() {
    numbers := []int{1, 2, 3, 4, 5}
    for index, value := range numbers {
        fmt.Printf("numbers[%d] = %d\n", index, value)
    }
}

Kết quả:

Copy
numbers[0] = 1
numbers[1] = 2
numbers[2] = 3
numbers[3] = 4
numbers[4] = 5

Trong ví dụ này, vòng lặp for range lặp qua các phần tử của mảng numbers và in ra chỉ số và giá trị của từng phần tử.

Vòng Lặp range với Chuỗi

go Copy
package main

import "fmt"

func main() {
    str := "Golang"
    for index, char := range str {
        fmt.Printf("str[%d] = %c\n", index, char)
    }
}

Kết quả:

Copy
str[0] = G
str[1] = o
str[2] = l
str[3] = a
str[4] = n
str[5] = g

Trong ví dụ này, vòng lặp for range lặp qua các ký tự của chuỗi str và in ra chỉ số và ký tự của từng phần tử.

Vòng Lặp range với Map

go Copy
package main

import "fmt"

func main() {
    subjectMarks := map[string]int{"Math": 90, "Science": 85, "English": 88}
    for subject, marks := range subjectMarks {
        fmt.Printf("%s: %d\n", subject, marks)
    }
}

Kết quả:

Copy
Math: 90
Science: 85
English: 88

Trong ví dụ này, vòng lặp for range lặp qua các cặp khóa-giá trị của map subjectMarks và in ra từng cặp.

Điều Khiển Vòng Lặp với breakcontinue

Sử Dụng break

Từ khóa break được sử dụng để kết thúc vòng lặp ngay lập tức.

go Copy
package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            break
        }
        fmt.Println(i)
    }
}

Kết quả:

Copy
0
1
2
3
4

Trong ví dụ này, vòng lặp for sẽ kết thúc khi i bằng 5 do sử dụng từ khóa break.

Sử Dụng continue

Từ khóa continue được sử dụng để bỏ qua phần còn lại của vòng lặp hiện tại và tiếp tục với lần lặp tiếp theo.

go Copy
package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Println(i)
    }
}

Kết quả:

Copy
1
3
5
7
9

Trong ví dụ này, vòng lặp for sẽ bỏ qua các giá trị chẵn và chỉ in ra các giá trị lẻ.

Vòng Lặp Lồng Nhau

Go cho phép sử dụng các vòng lặp lồng nhau, tức là một vòng lặp nằm bên trong một vòng lặp khác.

go Copy
package main

import "fmt"

func main() {
    for i := 1; i <= 3; i++ {
        for j := 1; j <= 3; j++ {
            fmt.Printf("i = %d, j = %d\n", i, j)
        }
    }
}

Kết quả:

Copy
i = 1, j = 1
i = 1, j = 2
i = 1, j = 3
i = 2, j = 1
i = 2, j = 2
i = 2, j = 3
i = 3, j = 1
i = 3, j = 2
i = 3, j = 3

Trong ví dụ này, vòng lặp for bên ngoài lặp qua các giá trị của i từ 1 đến 3, và vòng lặp for bên trong lặp qua các giá trị của j từ 1 đến 3.

Vòng Lặp với Nhiều Biến

Go cho phép sử dụng nhiều biến trong vòng lặp for bằng cách sử dụng phép gán nhiều biến.

go Copy
package main

import "fmt"

func main() {
    for i, j := 0, 10; i < 10; i, j = i+1, j-1 {
        fmt.Printf("i = %d, j = %d\n", i, j)
    }
}

Kết quả:

Copy
i = 0, j = 10
i = 1, j = 9
i = 2, j = 8
i = 3, j = 7
i = 4, j = 6
i = 5, j = 5
i = 6, j = 4
i = 7, j = 3
i = 8, j = 2
i = 9, j = 1

Trong ví dụ này, vòng lặp for sử dụng hai biến ij, với i tăng dần và j giảm dần trong mỗi lần lặp.

Kết Luận

Vòng lặp for là một công cụ mạnh mẽ và linh hoạt trong Go, cho phép thực hiện các tác vụ lặp đi lặp lại một cách hiệu quả. Bài viết này đã cung cấp một cái nhìn tổng quan chi tiết về các loại vòng lặp trong Go, bao gồm cú pháp, cách sử dụng, và các ví dụ minh họa cụ thể. Hiểu rõ về vòng lặp for sẽ giúp bạn viết mã Go hiệu quả và dễ bảo trì hơn.

Avatar
Được viết bởi

Admin Team

Gợi ý câu hỏi phỏng vấn

Không có dữ liệu

Không có dữ liệu

Gợi ý bài viết

Không có dữ liệu

Không có dữ liệu

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào