Go语言流程控制-for循环 – 21运维
通知: .-...

Go语言流程控制-for循环

GO 21运维 824浏览

Go语言和其他语言不一样,只有for循环,灵活且简单粗暴。
一、for循环
for循环语法格式如下:

for 初始化语句;条件表达式 ;结束语句  {
   代码模块
}

说明:
(1)for循环可以通过break、goto、return、panic语句强制退出循环,且退出以后退出语句不会被执行;
其中break 可以选择中断哪一个循环;
(2)左花括号”{” 比如和for同行;
(3)for支持在初始化语句中进行变量定义和初始化,单要平行赋值比如“:=“,不支持逗号分割;
(4)for 后边的任何一个表达式都可以省略或者全部省略,注意单一省略的时候,分号改加的还是要加上。

案例:
1,for初始语句–开始循环时执行的语句

for i :=1 ;i<5;i++{
      fmt.Println(i)
   }

主要用于一些变量的声明以及初始化

2,for 条件表达式–控制是否循环的开关

   for i :=1 ;i<5;i++{
      fmt.Println(i)
   }

此时i<5就是一个条件表达式,用于判断for是否进行循环的条件。

3,for结束语句–每次循环结束时
(1)结束语句说明。
每次循环结束时,执行的语句,比如前边以及下边这个案例的i++就是结束语句。
通过如下案例可以简单理解:

package main

import "fmt"

func main(){
   a := 1
   for ;a < = 3;a++ {
      fmt.Printf("a=%d\n",a)
   }
   fmt.Printf("a最后的值:%d \n",a)
}

输出:
a=1
a=2
a=3
a最后的值:4
for 循环只是输出的1-3,for退出。 在a=3这个循环结束后,i++又执行了一次,此时a=4,但是for不满足表达式就退出了。单独输出a变量就会是a=5了。
(2)for循环可以通过break、goto、return、panic语句强制退出循环,且退出以后退出语句不会被执行;
针对上边的案例,可以添加一个测试,for内部通过这几个关键词跳出,结束语句不会被执行。比如:

package main
import "fmt"

func main(){
   a := 1
   for ;a < = 3;a++ {
      fmt.Printf("a=%d\n",a)
      if a==3 {
         break
      }
   }
   fmt.Printf("a最后的值:%d \n",a)
}

输出结果:
a=1
a=2
a=3
a最后的值:3

由于for内部被break了,所以结束语句不会被执行。

案例:99乘法表

package main

import "fmt"

func main(){
   for x := 1; x< =9;x++  {
      for y := 1; y<=x ;y++  {
         fmt.Printf("%d *%d = %d \t",y,x,x*y)
      }
      //每一行输出以后,单独输出一个换行
      fmt.Println()
   }
}

输出结果:

1 *1 = 1    
1 *2 = 2    2 *2 = 4    
1 *3 = 3    2 *3 = 6    3 *3 = 9    
1 *4 = 4    2 *4 = 8    3 *4 = 12   4 *4 = 16   
1 *5 = 5    2 *5 = 10   3 *5 = 15   4 *5 = 20   5 *5 = 25   
1 *6 = 6    2 *6 = 12   3 *6 = 18   4 *6 = 24   5 *6 = 30   6 *6 = 36   
1 *7 = 7    2 *7 = 14   3 *7 = 21   4 *7 = 28   5 *7 = 35   6 *7 = 42   7 *7 = 49   
1 *8 = 8    2 *8 = 16   3 *8 = 24   4 *8 = 32   5 *8 = 40   6 *8 = 48   7 *8 = 56   8 *8 = 64   
1 *9 = 9    2 *9 = 18   3 *9 = 27   4 *9 = 36   5 *9 = 45   6 *9 = 54   7 *9 = 63   8 *9 = 72   9 *9 = 81

4,特殊循环–只有一个判断条件。

package main

import "fmt"

func main(){
   a := 1
   for a < = 3 {
      fmt.Printf("a=%d\n",a)
      a++
   }
}

输出结果:
a=1
a=2
a=3

二,for range使用
for range可以用来遍历数组、切片、字符串、映射和channel。
说明:
1,数组、切片、字符串:for range返回索引和值
2,映射:for range返回key和value
3,通道channel:for range只返回通道内的值。
这里一直再用,就不再单独笔记。

转载请注明:21运维 » Go语言流程控制-for循环