Ngôn ngữ Go chỉ chứa một vòng lặp duy nhất là vòng lặp for. Vòng lặp for là một cấu trúc điều khiển lặp lại cho phép chúng ta viết một vòng lặp được thực thi một số lần cụ thể. Trong ngôn ngữ Go, vòng lặp for này có thể được sử dụng ở các dạng khác nhau và các dạng là:
Điều cần biết về vòng lặp for trong Golang
Vòng lặp for đơn giản trong Golang
Vòng lặp for đơn giản tương tự như những gì chúng ta sử dụng trong các ngôn ngữ lập trình khác như C, C++, Java, C#, v.v.
Cú pháp:
for initialization; condition; post{
// statements....
}
Cụ thể:
Câu lệnh initialization (khởi tạo) là tùy chọn và được thực thi trước khi vòng lặp for bắt đầu. Câu lệnh khởi tạo luôn nằm trong một câu lệnh đơn giản như khai báo biến, câu lệnh tăng hoặc gán hoặc lệnh gọi hàm.
Câu lệnh condition (điều kiện) chứa một biểu thức boolean, được đánh giá khi bắt đầu mỗi lần lặp của vòng lặp. Nếu giá trị của câu lệnh điều kiện là đúng, thì vòng lặp sẽ được thực thi.
Câu lệnh post được thực thi sau phần nội dung của vòng lặp for. Sau câu lệnh post, câu lệnh điều kiện sẽ đánh giá lại nếu giá trị của câu lệnh điều kiện là sai, thì vòng lặp sẽ kết thúc.
Ví dụ:
// Minh họa chương trình Go
// sử dụng vòng lặp for đơn giản
package main
import "fmt"
// Hàm chính main
func main() {
// vòng lặp for
// Vòng lặp này bắt đầu khi i = 0
// triển khai cho tới khi điều kiện i<4 condition là đúng
// lệnh post là i++
for i := 0; i < 4; i++{
fmt.Printf("Quantrimang\n")
}
}
Kết quả:
Quantrimang Quantrimang Quantrimang Quantrimang
Vòng lặp for cho vòng lặp vô tận
Vòng lặp for cũng được sử dụng như một vòng lặp vô hạn bằng cách xóa cả ba biểu thức khỏi vòng lặp for. Khi người dùng không viết câu lệnh điều kiện trong vòng lặp for, điều đó có nghĩa là câu lệnh điều kiện là đúng và vòng lặp sẽ đi vào vòng lặp vô hạn.
Cú pháp:
for{
// Statement...
}
Ví dụ:
// Chương trình Go minh họa
// cách dùng một vòng lặp vô tận
package main
import "fmt"
// Hàm chính
func main() {
// Vòng lặp vô tận
for {
fmt.Printf("Quantrimang\n")
}
}
Kết quả:
Quantrimang Quantrimang Quantrimang Quantrimang Quantrimang Quantrimang Quantrimang Quantrimang Quantrimang Quantrimang ...........
Vòng lặp for cho vòng lặp while
Vòng lặp for cũng có thể hoạt động như vòng lặp while. Vòng lặp này được thực thi cho đến khi điều kiện cho là đúng. Khi giá trị của điều kiện cho là sai thì vòng lặp kết thúc.
Cú pháp:
for condition{
// statement..
}
Ví dụ:
// Minh họa chương trình Go
// dùng vòng lặp for cho vòng lặp while
package main
import "fmt"
// Hàm chính
func main() {
// vòng lặp while
// vòng lặp for chạy cho tới khi
// điều kiện i < 3 là đúng
i:= 0
for i < 3 {
i += 2
}
fmt.Println(i)
}
Kết quả:
4
Phạm vi đơn giản trong vòng lặp for
Bạn cũng có thể sử dụng phạm vi trong vòng lặp for.
Cú pháp:
for i, j:= range rvariable{
// statement..
}
Cụ thể:
- i và j là các biến mà giá trị của vòng lặp được gán vào. Chúng cũng được gọi là biến lặp.
- Biến thứ hai, tức j là tùy chọn.
- Biểu thức phạm vi được đánh giá một lần trước khi bắt đầu vòng lặp.
Ví dụ:
// Chương trình Go minh họa
// cách dùng vòng lặp phạm vi đơn giản
package main
import "fmt"
// Hàm chính
func main() {
// Ở đây rvariable là một mảng
rvariable:= []string{"GFG", "Quan", "Quantrimang"}
// i và j chứa giá trị của rvariable
// i chứa số chỉ mục của từng chuỗi đơn lẻ
// j chứa chuỗi cá nhân của mảng được cung cấp
for i, j:= range rvariable {
fmt.Println(i, j)
}
}
Kết quả:
0 GFG
1 Quan
2 Quantrimang
Dùng vòng lặp for cho chuỗi
Vòng lặp for có thể lặp lại điểm mã Unicode cho một chuỗi.
Cú pháp:
for index, chr:= range str{
// Statement..
}
Ở đây, index là biến lưu trữ byte đầu tiên của điểm mã được mã hóa UTF-8 và chr lưu trữ các ký tự của chuỗi đã cho và str là một chuỗi.
Ví dụ:
// Chương trình Go minh họa
// cách dùng vòng lặp for sử dụng chuỗi
package main
import "fmt"
// Hàm chính
func main() {
// Chuỗi là một phạm vi trong vòng lặp for
for i, j:= range "XabCd" {
fmt.Printf("The index number of %U is %d\n", j, i)
}
}
Kết quả:
The index number of U+0058 is 0
The index number of U+0061 is 1
The index number of U+0062 is 2
The index number of U+0043 is 3
The index number of U+0064 is 4
For map
Vòng lặp for có thể lặp lại các cặp khóa và giá trị của bản đồ.
Cú pháp:
for key, value := range map {
// Statement..
}
Ví dụ:
// Minh họa chương trình Go
// dùng vòng lặp for cho map
package main
import "fmt"
// Hàm chính
func main() {
// dùng map
mmap := map[int]string{
22:"Quan",
33:"GFG",
44:"Quantrimang",
}
for key, value:= range mmap {
fmt.Println(key, value)
}
}
Kết quả:
22 Quan
33 GFG
44 Quantrimang
For channel
Vòng lặp for có thể lặp lại các giá trị tuần tự được gửi trên kênh cho đến khi nó đóng lại.
Cú pháp:
for item := range Chnl {
// statements..
}
Ví dụ:
// Chương trình Go minh họa
// cách dùng lặp for bằng channel
package main
import "fmt"
// Hàm chính
func main() {
// dùng channel
chnl := make(chan int)
go func(){
chnl <- 100
chnl <- 1000
chnl <- 10000
chnl <- 100000
close(chnl)
}()
for i:= range chnl {
fmt.Println(i)
}
}
Kết quả:
100
1000
10000
100000
Điểm quan trọng cần ghi nhớ:
- Dấu ngoặc đơn không được sử dụng xung quanh ba câu lệnh của vòng lặp for.
- Dấu ngoặc nhọn là bắt buộc trong vòng lặp for.
- Dấu ngoặc mở phải nằm trên cùng một dòng với câu lệnh post.
- Nếu mảng, chuỗi, lát cắt hoặc bản đồ trống, thì vòng lặp for không đưa ra lỗi và tiếp tục luồng của nó. Hay nói cách khác, nếu mảng, chuỗi, lát cắt hoặc bản đồ là nil thì số lần lặp của vòng lặp for là 0.