for 循环

本页内容
下一节: Go_nested_loops

Go 语言 for 循环

Go 语言循环语句

for 循环是一个循环控制结构,可以执行指定次数的循环。

语法

Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。

和 C 语言的 for 一样:

for init; condition; post { }

和 C 的 while 一样:

for condition { }

和 C 的 for(;;) 一样:

for { }
  • init: 一般为赋值表达式,给控制变量赋初值;
  • condition: 关系表达式或逻辑表达式,循环控制条件;
  • post: 一般为赋值表达式,给控制变量增量或减量。

for语句执行过程如下:

  • 1、先对表达式 1 赋初值;
  • 2、判别赋值表达式 init 是否满足给定条件,若其值为真,满足循环条件,则执行循环体内语句,然后执行 post,进入第二次循环,再判别 condition;否则判断 condition 的值为假,不满足条件,就终止for循环,执行循环体外语句。

for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下:

for key, value := range oldMap {
    newMap[key] = value
}

以上代码中的 key 和 value 是可以省略。

如果只想读取 key,格式如下:

for key := range oldMap

或者这样:

for key, _ := range oldMap

如果只想读取 value,格式如下:

for _, value := range oldMap

for 语句语法流程如下图所示:

==

计算 1 到 10 的数字之和:


示例

package main

import "fmt"

func main() {

   sum := 0

      for i := 0; i <= 10; i++ {

         sum += i

      }

   fmt.Println(sum)

}

输出结果为:

55

init 和 post 参数是可选的,我们可以直接省略它,类似 While 语句。

以下实例在 sum 小于 10 的时候计算 sum 自相加后的值:


示例

package main

import "fmt"

func main() {

   sum := 1

   for ; sum <= 10; {

      sum += sum

   }

   fmt.Println(sum)

   // 这样写也可以,更像 While 语句形式

   for sum <= 10{

      sum += sum

   }

   fmt.Println(sum)

}

输出结果为:

16
16

无限循环:


示例

package main

import "fmt"

func main() {

   sum := 0

   for {

      sum++ // 无限循环下去

   }

   fmt.Println(sum) // 无法输出

}

要停止无限循环,可以在命令窗口按下ctrl-c 。

For-each range 循环

这种格式的循环可以对字符串、数组、切片等进行迭代输出元素。


示例

package main

import "fmt"

func main() {

   strings := []string{"google", "xiaobai"}

   for i, s := range strings {

      fmt.Println(i, s)

   }

   numbers := [6]int{1, 2, 3, 5}

   for i,x:= range numbers {

      fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)

   }  

}

以上实例运行输出结果为:

0 google
1 xiaobai
第 0 位 x 的值 = 1
第 1 位 x 的值 = 2
第 2 位 x 的值 = 3
第 3 位 x 的值 = 5
第 4 位 x 的值 = 0
第 5 位 x 的值 = 0

for 循环的 range 格式可以省略 key 和 value,如下实例:


示例

package main

import "fmt"

func main() {

    map1 := make(map[int]float32)

    map1[1] = 1.0

    map1[2] = 2.0

    map1[3] = 3.0

    map1[4] = 4.0

   

    // 读取 key 和 value

    for key, value := range map1 {

      fmt.Printf("key is: %d - value is: %f\n", key, value)

    }

    // 读取 key

    for key := range map1 {

      fmt.Printf("key is: %d\n", key)

    }

    // 读取 value

    for _, value := range map1 {

      fmt.Printf("value is: %f\n", value)

    }

}

以上实例运行输出结果为:

key is: 4 - value is: 4.000000
key is: 1 - value is: 1.000000
key is: 2 - value is: 2.000000
key is: 3 - value is: 3.000000
key is: 1
key is: 2
key is: 3
key is: 4
value is: 1.000000
value is: 2.000000
value is: 3.000000
value is: 4.000000

Go 语言循环语句

下一节: Go_nested_loops
此页面最后编辑于2022年8月17日 (星期三) 17:45。