Hiểu về các vòng lặp trong Go
Vòng lặp for là một câu lệnh luồng điều khiển được sử dụng để thực thi lặp đi lặp lại một khối mã. Trong Go, vòng lặp for là cấu trúc lặp duy nhất.
Bạn có thể sử dụng vòng lặp for để lặp lại các khối mã và mô phỏng đầy đủ các vòng lặp từ các ngôn ngữ khác, bao gồm các vòng lặp for … each, while, và do … while.
Mục Lục
Cài đặt Đi để Bắt đầu
Đảm bảo rằng bạn đã cài đặt Go để làm theo. Hầu hết các ví dụ này yêu cầu fmt và bạn nên sử dụng cấu trúc tổng thể như sau:
package mainimport "fmt"
func main() {
}
Ba thành phần cho Loop in Go
Đây có lẽ là vòng lặp for phổ biến nhất. Như tên cho thấy, nó có ba thành phần: giá trị ban đầu, một điều kiện và một câu lệnh đăng. Đây là cú pháp:
for initialization; condition; post {
statement(s)
}
Trong vòng lặp này, sau khi khởi tạo, điều kiện được đánh giá. Nếu đúng, các câu lệnh trong khối lặp for sẽ thực thi, theo sau là câu lệnh post. Chương trình lặp lại quá trình này cho đến khi điều kiện không còn được đánh giá là true. Dưới đây là một ví dụ.
for i := 1; i <= 5; i++ {
fmt.Println(i)
}
Nơi đây:
- bộ khởi tạo tôi đến 1
- điều kiện là tôi <= 5
- tuyên bố bài viết là i ++
Vòng lặp for này in ra giá trị hiện tại của tôi nếu nó nhỏ hơn hoặc bằng 5. ‘Post statement’ thêm 1 vào tôi sau mỗi vòng lặp và một lần tôi đến 5, vòng lặp kết thúc. Nếu không có ‘câu lệnh đăng’, vòng lặp sẽ thực hiện vô hạn thời gian và có khả năng gây ra sự cố chương trình.
Một vòng lặp đi lặp lại
Go không có vòng lặp for-each, nhưng bạn có thể sửa đổi vòng lặp for để duyệt qua một tập hợp các phần tử. Đây là cú pháp:
for index, value := range collection {
}
Bộ sưu tập có thể là một mảng, lát cắt, chuỗi hoặc bản đồ hoặc các giá trị nhận được trên một kênh. Chỉ mục là vị trí trong bộ sưu tập. Giá trị là phần tử tại chỉ mục.
Nếu bạn chỉ quan tâm đến giá trị, hãy bỏ qua chỉ mục như sau:
for _, value := range slice {}
Trong ví dụ dưới đây, vòng lặp đi qua mảng và in cả chỉ mục và giá trị của mỗi mục trong đó.
array := []string{"hello", "world"}for i, j := range array {
fmt.Println(i, j)
}
Vòng lặp trong khi di chuyển
Bạn có thể sử dụng vòng lặp for để đạt được chức năng của vòng lặp while. Trong vòng lặp while, một câu lệnh chạy miễn là một điều kiện vẫn đúng. Hãy xem xét những điều sau:
i := 1for i <= 5 {
i *= 2
}
fmt.Println(i)
Trong mã này, trong khi tôi nhỏ hơn hoặc bằng 5, nó được nhân với 2 mỗi khi vòng lặp chạy.
A Do… While Loop in Go
Vòng lặp do … while khác với vòng lặp while vì phần thân của vòng lặp sẽ thực thi ít nhất một lần. Có hai cách tiếp cận để thực hiện điều này trong cờ vây.
- Đảm bảo điều kiện cho lần lặp đầu tiên được đặt thành true.
i := 10for next := true; next; next = i <= 5 {
fmt.Println(i)
i++
}Vì điều kiện ban đầu được đặt thành true, tôi được in và sau đó tăng dần trong lần lặp đầu tiên. Kể từ điều kiện (tôi <= 5) đánh giá là false trong lần lặp thứ hai, vòng lặp sẽ thoát.
- Thực thi phần thân của vòng lặp một lần trước khi kiểm tra điều kiện.
i := 10for {
fmt.Println(i)
i++if i >= 5 {
break;
}
}Trong vòng lặp for ở trên, 10, là giá trị của i được in đầu tiên, sau đó câu lệnh if sẽ thực thi. Nếu điều kiện là đúng, vòng lặp bị phá vỡ, nếu không thì vòng lặp tiếp tục.
Các tuyên bố về luồng kiểm soát khác
Các vòng lặp trong lập trình rất quan trọng vì chúng đơn giản hóa các tác vụ lặp đi lặp lại và tiết kiệm thời gian. Thay vì viết một dòng mã mười lần, bạn có thể chỉ cần tạo một vòng lặp chạy mười lần. Các câu lệnh luồng điều khiển khác là câu lệnh if, if … else, if … else if … if và switch.
Đọc tiếp