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
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
package main
import "fmt"
func main() {
for i := 1; i <= 5; i++ {
fmt.Println(i)
}
}
Kết quả:
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
package main
import "fmt"
func main() {
for i := 5; i >= 1; i-- {
fmt.Println(i)
}
}
Kết quả:
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
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
package main
import "fmt"
func main() {
i := 1
for i <= 5 {
fmt.Println(i)
i++
}
}
Kết quả:
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
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ả:
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
package main
import "fmt"
func main() {
str := "Golang"
for index, char := range str {
fmt.Printf("str[%d] = %c\n", index, char)
}
}
Kết quả:
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
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ả:
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 break
và continue
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
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
}
Kết quả:
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
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue
}
fmt.Println(i)
}
}
Kết quả:
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
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ả:
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
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ả:
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 i
và j
, 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.