Go – Vòng lặp

Vòng lặp được sử dụng để chạy một đoạn code lặp đi lặp lại nhiều lần. Thông thường, các câu lệnh được xử lý tuần tự nối tiếp nhau. Một câu lệnh vòng lặp cho phép chúng ta thực thi một câu lệnh hoặc một nhóm các câu lệnh nhiều lần.

for là vòng lặp duy nhất được hỗ trợ bởi Go. Go không hỗ trợ vòng lặp while và do while thường hiện diện trong các ngôn ngữ khác như là C, C++.

Ngôn ngữ lập trình Go cung cấp những kiểu vòng lặp sau để xử lý các yêu cầu lặp

  • Vòng lặp for
  • Vòng lặp nested for

Vòng lặp for

Sau đây là cú pháp của vòng lặp for trong Go

for Khởi tạo; điều kiện; tăng {
	// body vòng lặp
}

Câu lệnh khởi tạo được chạy đúng một lần trước khi chạy vòng lặp đầu tiên. Mỗi lần lặp, điều kiện được kiểm tra. Nếu điều kiện là true, thì phần body của vòng lặp sẽ được chạy, nếu không, vòng lặp sẽ kết thúc. Câu lệnh tăng sẽ được gọi sau mỗi lần vòng lặp kết thúc.

Sau đây là ví dụ của vòng lặp for

package main
import "fmt"

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

Kết quả

0 1 2 3 4 5 6 7 8 9

Không giống như các ngôn ngữ lập trình khác như là C, C++, Java, vòng lặp for của Go không cần phải chứa dấu ngoặc đơn, và dấu ngoặc nhọn là bắt buộc.

Cả hai câu lệnh khởi tạo và tăng giá trị trong vòng lặp for là không bắt buộc và có thể được bỏ qua.

Ví dụ sau bỏ qua câu lệnh khởi tạo.

package main
import "fmt"

func main() {
    i := 2
    for ;i <= 10; i += 2 {
        fmt.Printf("%d ", i)
    }
}

Kết quả

2 4 6 8 10

Ví dụ bỏ qua câu lệnh tăng giá trị

package main
import "fmt"

func main() {
    i := 2
    for ;i <= 20; {
        fmt.Printf("%d ", i)
        i *= 2
    }
}

Kết quả

2 4 8 16

Chú ý rằng bạn có thể bỏ qua dấu chấm phẩy trong vòng lặp for và viết lại ví dụ trên như sau

package main
import "fmt"

func main() {
    i := 2
    for i <= 20 {
        fmt.Printf("%d ", i)
        i *= 2
    }
}

Vòng lặp for ở trên giống hệt như vòng lặp while ở trong các ngôn ngữ lập trình khác. Go không có vòng lặp while bởi vì chúng ta có thể dễ dàng biểu diễn vòng lặp while sử dụng vòng lặp for

Cuối cùng, chúng ta có thể bỏ điều kiện trong vòng lặp for, biến nó thành vòng lặp vô hạn

package main

func main() {
	// Vòng lặp vô hạn
	for {
	}
}

Câu lệnh break

Chúng ta có thể sử dụng câu lệnh break để thoát ra khỏi vòng lặp trước khi nó thoát như thông thường.

package main
import "fmt"

func main() {
	for num := 1; num <= 100; num++ {
		if num%3 == 0 && num%5 == 0 {
			fmt.Printf("First positive number divisible by both 3 and 5 is %d\n", num)
			break
		}
	}
}

Kết quả

First positive number divisible by both 3 and 5 is 15

Câu lệnh continue

Câu lệnh continue được sử dụng để dừng việc chạy các câu lệnh trong body của vòng lặp và tiếp tục thực hiện vòng lặp tiếp theo.

package main
import "fmt"

func main() {
	for num := 1; num <= 10; num++ {
		if num%2 == 0 {
			continue;
		}
		fmt.Printf("%d ", num)
	}
}

Kết quả

1 3 5 7 9

Vòng lặp nested for

Một vòng lặp for mà chứa vòng lặp for khác bên trong thì nó được gọi là vòng lặp nested for.

Để hiểu hơn về khái niệm này, hãy thử viết một chương trình và in ra như sau

*
**
***
****
*****

Đoạn code bên dưới đây sẽ sử dụng nested for để in ra chuỗi trên. Biến n ở hàng thứ 8 sẽ được dùng để định nghĩa số hàng được in ra. Trong ví dụ này sẽ là 5. Vòng lặp bên ngoài i chạy từ 0 đến 4. Vòng lặp bên trong j chạy từ 0 đến j. Bên trong vòng lặp for in * cho mỗi lần lặp và vòng lặp bên ngoài sẽ in ra ký tự xuống dòng

package main

import (  
    "fmt"
)

func main() {  
    n := 5
    for i := 0; i < n; i++ {
        for j := 0; j <= i; j++ {
            fmt.Print("*")
        }
        fmt.Println()
    }
}

 

You May Also Like

About the Author: Nguyen Dinh Thuc

Leave a Reply

Your email address will not be published.