Go语言仅包含一个for循环。 for循环是一种重复控制结构, 它使我们可以编写执行特定次数的循环。在Go语言中, 此for循环可以以不同的形式使用, 形式包括:
1. for循环简单与我们在其他编程语言(例如C, C ++, Java, C#等)中使用的相似。
语法如下:
for initialization; condition; post{
// statements....
}
这里,
- 的初始化语句是可选的, 在for循环开始之前执行。初始化语句始终位于简单的语句中, 例如变量声明, 递增或赋值语句或函数调用。
- 的健康)状况语句包含一个布尔表达式, 该表达式在循环的每次迭代开始时进行评估。如果条件语句的值为true, 则执行循环。
- 的发布语句在for循环的主体之后执行。在post语句之后, 如果条件语句的值为false, 则条件语句再次求值, 然后循环结束。
例子:
// 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( "lsbin\n" )
}
}
输出如下:
lsbin
lsbin
lsbin
lsbin
2.对于循环作为无限循环:通过从for循环中删除所有三个表达式, for循环也可用作无限循环。如果用户未在for循环中编写条件语句, 则意味着条件语句为true, 并且循环进入无限循环。
语法如下:
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( "lsbin\n" )
}
}
输出如下:
lsbin
lsbin
lsbin
lsbin
lsbin
lsbin
lsbin
lsbin
lsbin
lsbin
...........
3. for循环, 而while循环:for循环也可以用作while循环。执行此循环, 直到给定条件为真为止。当给定条件的值为false时, 循环结束。
语法如下:
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" , "lsbin" }
// 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 lsbin
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循环可以遍历映射的键和值对。
语法如下:
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: "lsbin" , }
for key, value:= range mmap {
fmt.Println(key, value)
}
}
输出如下:
22 Geeks
33 GFG
44 lsbin
7.对于渠道: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循环的迭代次数为零。