Go语言for循环是一种重复控制语句,它使我们可以编写执行特定次数的循环。在Go语言中,此for循环可以以不同的形式使用,形式包括:
1.简单的for循环我们在其他编程语言(例如C,C ++,Java,C#等)中使用的相似。
语法:
for initialization; condition; post{
// 语句....
}
这里,
在初始化(initialization)语句是可选的,用于循环开始之前执行。初始化语句始终位于简单的语句中,例如变量声明,递增或赋值语句或函数调用。
条件(condition)语句包含一个布尔表达式,该表达式在循环的每次迭代开始时计算。如果条件语句的值为true,则执行循环。
post语句在for循环体之后执行。在post语句之后,条件语句再次计算条件语句的值是否为false,然后循环结束。
//使用for循环
package main
import "fmt"
//主函数
func main() {
// for 循环
//这个循环在i = 0时开始执行,直到i<4条件为真
//post语句是i++
for i := 0; i < 4; i++{
fmt.Printf("sfjvip\n")
}
}
输出:
sfjvip
sfjvip
sfjvip
sfjvip
2.将for循环作为无限循环:通过从for循环中删除所有三个表达式,for循环也可用作无限循环。如果用户未在for循环中编写条件语句,则意味着条件语句为true,并且循环进入无限循环。
// 使用无限循环
package main
import "fmt"
func main() {
// 无限循环
for {
fmt.Printf("sfjvip\n")
}
}
输出:
sfjvip
sfjvip
sfjvip
sfjvip
sfjvip
sfjvip
sfjvip
sfjvip
sfjvip
sfjvip
...........
3. for循环用作while循环: for循环也可以用作while循环。执行此循环,直到给定条件为真为止。当给定条件的值为false时,循环结束。
//for循环与while循环相同
package main
import "fmt"
func main() {
//while循环
//for循环执行到
//i <3条件为真
i:= 0
for i < 3 {
i += 2
}
fmt.Println(i)
}
输出:
4
4. for循环中的简单范围:您也可以在for循环中使用范围。
语法:
for i, j:= range rvariable{
// 语句..
}
这里,
i和j是分配迭代值的变量。它们也称为迭代变量。
第二个变量,即j是可选的。
范围表达式在循环开始之前被评估一次。
示例
package main
import "fmt"
func main() {
//这里rvariable是一个数组
rvariable:= []string{"GFG", "Geeks", "sfjvip"}
//i和j存储rvariable的值
//i存储单个字符串和的索引号
//j存储给定数组的单个字符串
for i, j:= range rvariable {
fmt.Println(i, j)
}
}
输出:
0 GFG
1 Geeks
2 sfjvip
5.对字符串使用for循环: for循环可以遍历字符串的Unicode代码点。
语法:
for index, chr:= range str{
// 语句..
}
在这里,索引是存储UTF-8编码代码点的第一个字节的变量,而chr是存储给定字符串的字符的变量,而str是字符串。
示例
package main
import "fmt"
func main() {
// 字符串作为for循环中的范围
for i, j := range "XabCd" {
fmt.Printf("%U 的索引值为 %d\n", j, i)
}
}
输出:
U+0058 的索引值为 0
U+0061 的索引值为 1
U+0062 的索引值为 2
U+0043 的索引值为 3
U+0064 的索引值为 4
6.对于map使用for循环: for循环可以遍历map的键和值对。
语法:
for key, value := range map {
// 语句..
}
示例
package main
import "fmt"
func main() {
mmap := map[int]string{
22: "Geeks",
33: "GFG",
44: "sfjvip",
}
for key, value := range mmap {
fmt.Println(key, value)
}
}
输出:
22 Geeks
33 GFG
44 sfjvip
7. For通道: for循环可以遍历通道上发送的顺序值,直到关闭为止。
语法:
for item := range Chnl {
// 语句..
}
示例
package main
import "fmt"
func main() {
// 使用 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语句所在的行相同。
如果数组,字符串,切片或map集合为空,则for循环不会抛出错误并继续其流程。换句话说,如果数组,字符串,切片或map为nil,则for循环的迭代次数为零。