Go 语言只包含一个循环,即 for 循环。 for 循环是一种重复控制结构,它允许我们编写一个执行特定次数的循环。在 Go 语言中,这个 for 循环可以以不同的形式使用,形式有:
1. 简单的 for 循环与我们在其他编程语言中使用的类似,如 C、C++、 Java、C# 等。
句法:
for initialization; condition; post{
// statements....
}
这里,
- 初始化语句是可选的,在 for 循环开始之前执行。初始化语句总是在一个简单的语句中,如变量声明、增量或赋值语句或函数调用。
- 条件语句包含一个布尔表达式,在循环的每次迭代开始时对其进行评估。如果条件语句的值为真,则执行循环。
- post语句在 for 循环体之后执行。在 post 语句之后,如果条件语句的值为假,则条件语句再次求值,然后循环结束。
例子:
// Go program to illustrate the
// use of simple for loop
package main
import "fmt"
// Main function
func main() {
// for loop
// This loop starts when i = 0
// executes till i<4 condition is true
// post statement is i++
for i := 0; i < 4; i++{
fmt.Printf("GeeksforGeeks\n")
}
}
输出:
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
2. For 循环作为无限循环:通过从 for 循环中删除所有三个表达式,for 循环也用作无限循环。当用户没有在 for 循环中写入条件语句时,表示条件语句为真,循环进入无限循环。
句法:
for{
// Statement...
}
例子:
// Go program to illustrate the
// use of an infinite loop
package main
import "fmt"
// Main function
func main() {
// Infinite loop
for {
fmt.Printf("GeeksforGeeks\n")
}
}
输出:
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
...........
3. for 循环作为while 循环: for 循环也可以作为while 循环工作。这个循环一直执行到给定的条件为真。当给定条件的值为假时,循环结束。
句法:
for condition{
// statement..
}
例子:
// Go program to illustrate the
// the for loop as while Loop
package main
import "fmt"
// Main function
func main() {
// while loop
// for loop executes till
// i < 3 condition is true
i:= 0
for i < 3 {
i += 2
}
fmt.Println(i)
}
输出:
4
4. for 循环中的简单范围:您也可以在 for 循环中使用范围。
句法:
for i, j:= range rvariable{
// statement..
}
这里,
- i 和 j 是分配迭代值的变量。它们也称为迭代变量。
- 第二个变量,即 j 是可选的。
- 范围表达式在循环开始之前计算一次。
例子:
// Go program to illustrate the
// use of simple range loop
package main
import "fmt"
// Main function
func main() {
// Here rvariable is a array
rvariable:= []string{"GFG", "Geeks", "GeeksforGeeks"}
// i and j stores the value of rvariable
// i store index number of individual string and
// j store individual string of the given array
for i, j:= range rvariable {
fmt.Println(i, j)
}
}
输出:
0 GFG
1 Geeks
2 GeeksforGeeks
5. 对字符串使用 for 循环: for 循环可以遍历字符串的 Unicode 代码点。
句法:
for index, chr:= range str{
// Statement..
}
在这里,该索引是存储UTF-8编码码点的第一个字节和CHR存储给定字符串的各字符和STR是一个字符串变量。
例子:
// Go program to illustrate the
// use for loop using string
package main
import "fmt"
// Main function
func main() {
// String as a range in the for loop
for i, j:= range "XabCd" {
fmt.Printf("The index number of %U is %d\n", j, i)
}
}
输出:
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
6. For Maps: for 循环可以迭代映射的键值对。
句法:
for key, value := range map {
// Statement..
}
例子:
// Go program to illustrate the
// use for loop using maps
package main
import "fmt"
// Main function
func main() {
// using maps
mmap := map[int]string{
22:"Geeks",
33:"GFG",
44:"GeeksforGeeks",
}
for key, value:= range mmap {
fmt.Println(key, value)
}
}
输出:
22 Geeks
33 GFG
44 GeeksforGeeks
7. For Channel: for 循环可以迭代通道上发送的顺序值,直到它关闭。
句法:
for item := range Chnl {
// statements..
}
例子:
// Go program to illustrate the
// use for loop using channel
package main
import "fmt"
// Main function
func main() {
// using channel
chnl := make(chan int)
go func(){
chnl <- 100
chnl <- 1000
chnl <- 10000
chnl <- 100000
close(chnl)
}()
for i:= range chnl {
fmt.Println(i)
}
}
输出:
100
1000
10000
100000
要点:
- for 循环的三个语句周围不使用括号。
- 花括号在 for 循环中是强制性的。
- 左大括号应该在 post 语句所在的同一行中。
- 如果数组、字符串、切片或映射为空,则 for 循环不会给出错误并继续其流程。或者换句话说,如果数组、字符串、切片或映射为 nil,则 for 循环的迭代次数为零。