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("cainiaojc\n") } }
输出:
cainiaojc cainiaojc cainiaojc cainiaojc
2.将for循环作为无限循环:通过从for循环中删除所有三个表达式,for循环也可用作无限循环。如果用户未在for循环中编写条件语句,则意味着条件语句为true,并且循环进入无限循环。
语法:
for{ // 语句... }
// 使用无限循环 package main import "fmt" func main() { // 无限循环 for { fmt.Printf("cainiaojc\n") } }
输出:
cainiaojc cainiaojc cainiaojc cainiaojc cainiaojc cainiaojc cainiaojc cainiaojc cainiaojc cainiaojc ...........
3. for循环用作while循环: for循环也可以用作while循环。执行此循环,直到给定条件为真为止。当给定条件的值为false时,循环结束。
语法:
for condition{ //语句.. }
//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", "cainiaojc"} //i和j存储rvariable的值 //i存储单个字符串和的索引号 //j存储给定数组的单个字符串 for i, j:= range rvariable { fmt.Println(i, j) } }
输出:
0 GFG 1 Geeks 2 cainiaojc
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: "cainiaojc", } for key, value := range mmap { fmt.Println(key, value) } }
输出:
22 Geeks 33 GFG 44 cainiaojc
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循环的迭代次数为零。