Golang 循环
Go语言只包含一个单一的循环,即for-loop。for 循环是一种重复控制结构,允许我们编写一个执行特定次数的循环。在Go语言中,这个for循环可以以不同的形式使用,这些形式是。
1.作为简单的for循环 它与我们在其他编程语言中使用的类似,如C、C++、Java、C#等。
语法。
for initialization; condition; post{
// statements....
}
这里:
- 初始化语句是可选的,在for循环开始前执行。初始化语句总是在一个简单的语句中,如变量声明,增量或赋值语句,或函数调用。
- 条件语句持有一个布尔表达式,它在循环的每次迭代开始时被评估。如果条件语句的值为真,那么循环就会执行。
- 后置语句在for-loop的主体之后执行。在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("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..
}
这里,index是存储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 Map: for 循环可以遍历Map的键和值对。
语法。
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 通道: 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循环就不会出现错误并继续其流程。或者换句话说,如果数组、字符串、片断或地图是空的,那么for循环的迭代次数就是零。