Go 语言循环语句(for循环)

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("nhooo\n")   
    } 
    
}

输出:

nhooo
nhooo
nhooo
nhooo

2.将for循环作为无限循环:通过从for循环中删除所有三个表达式,for循环也可用作无限循环。如果用户未在for循环中编写条件语句,则意味着条件语句为true,并且循环进入无限循环。

语法:

for{
     // 语句...
}
// 使用无限循环  
package main 
  
import "fmt"
   
func main() { 
      
    // 无限循环 
    for { 
      fmt.Printf("nhooo\n")   
    } 
    
}

输出:

nhooo
nhooo
nhooo
nhooo
nhooo
nhooo
nhooo
nhooo
nhooo
nhooo
...........

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", "nhooo"}  
      
        //i和j存储rvariable的值
        //i存储单个字符串和的索引号
        //j存储给定数组的单个字符串
    for i, j:= range rvariable { 
       fmt.Println(i, j)  
    } 
    
}

输出:

0 GFG
1 Geeks
2 nhooo

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: "nhooo",
    }
    for key, value := range mmap {
        fmt.Println(key, value)
    }
}

输出:

22 Geeks
33 GFG
44 nhooo

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循环的迭代次数为零。