Go语言循环语句

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

Go语言循环语句

资料参考至菜鸟教程。

  在不少实际问题中有许多具有规律性的重复操作因此在程序中就需要重复执行某些语句。

  以下为大多编程语言循环程序的流程图

效果图

  Go语言提供了以下几种类型循环处理语句

循环类型描述
for循环重复执行语句块
循环嵌套在for循环中嵌套一个或多个for循环

for循环

  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循环执行循环体外的语句。

  fro循环的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 语句形式
   sum = 1
   for sum <= 10{
      sum += sum
   }
   fmt.Println(sum)
}

输出结果

16
16

  无限循环

package main

import "fmt"

func main() {
   sum := 0
   for {
      sum++ // 无限循环下去
   }
   fmt.Println(sum) // 无法输出
}

For-each range 循环

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

package main
import "fmt"

func main() {
   strings := []string{"google", "golang"}
   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 golang
第 0 位 x 的值 = 11 位 x 的值 = 22 位 x 的值 = 33 位 x 的值 = 54 位 x 的值 = 05 位 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语言支持一下几种循环控制语句

控制语句描述
break语句经常用于中断当前for循环或跳出switch语句
continue语句跳过当前循环的剩余语句然后继续进行下一轮循环。
goto语句将控制转移到被标记的语句。

无限循环

  如果循环中条件语句永远不为false则会进行无限循环我们可以通过for循环语句中中设置一个条件表达式来执行无限循环

package main
import "fmt"

func main() {
    for true {
        fmt.Printf("无限循环.\n")
    }
}
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go