Go笔记:循环语句

Posted 无虑的小猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go笔记:循环语句相关的知识,希望对你有一定的参考价值。

1、for循环

  与Java语言不同,go语言中只有for循环,没有while和do while。for表达式无需加括号,语法如下:

for 初始语句;条件表达式;结束语句 
    循环体语句

  示例代码如下:

 package main
 
 import "fmt"
 
 /**
    循环
  */
 func for01() 
    for i := 1; i < 10; i++ 
       fmt.Printf("for01 ==> i: %v\\n", i)
    
 
 // 初始条件可省略
 func for02() 
    i := 1
    for ; i < 10; i++ 
       fmt.Printf("for02 ==> i: %v\\n", i)
    
 
 // 初始结束条件都可省略
 func for03() 
    i := 1
    for i < 10 
       fmt.Printf("for03 ==> i: %v\\n", i)
       i++
    
 
 // 永真循环
 func for04() 
    for 
       fmt.Println("for04 ==> 一直在循环")
    
 
 
 func main() 
    for01()
    for02()
    for03()
    //for04()
 

2、for range循环

  Go中可以使用for range遍历数组、切片、字符串、map及channel(通道)。遍历数组会返回索引和值。

 package main
 
 import "fmt"
 
 // 遍历数组,带有索引值的for range
 func forrange01() 
    var arr = [...]int1, 3, 5, 7, 9
    // i 为索引下标;v 为元素值
    for i, v := range arr 
       fmt.Printf("i = %v ; v = %v\\n", i, v)
    
 
 // 遍历数组,不用索引值,用匿名变量表示索引值的for range
 func forrange02() 
    var arr = [...]int1, 3, 5, 7, 9
    for _, v := range arr 
       fmt.Printf("v: %v\\n", v)
    
 
 
 func main() 
    forrange01()
    forrange02()
 

3、break关键字

  break可以结束for循环的代码块,示例代码如下:

 package main
 
 import "fmt"
 
 // break关键字
 func break01() 
    for i := 1; i < 10; i++ 
       if i == 5 
          break
       
       fmt.Printf("break01 ==> i: %v\\n", i)
    
    fmt.Println("break01 ==> over for")
 
 // 跳出循环到指定位置
 func break02() 
    LABEL:
    for i := 1; i < 10; i++ 
       if i == 3 
          break LABEL
       
       fmt.Printf("break02 ==> i: %v\\n", i)
    
    fmt.Println("break02 ==> over for")
 
 
 func main() 
    break01()
    break02()
 

4、continue关键字

  continue只能用在循环中,可以终止本次循环,进行下一次循环;continue语句后添加标签时,表示开始标签对应的循环。示例代码如下:

 package main
 
 import "fmt"
 
 // 输出偶数 continue -> 结束本次循环,继续下一次循环
 func continue01() 
    for i := 1; i < 10; i++ 
       if i%2 != 0 
          continue
       
       fmt.Printf("continue01 ==> i: %v是偶数\\n", i)
    
 
 // continue到指定标签
 func continue02() 
    for i := 1; i < 3; i++ 
       LABEL:
       for j := 1; j < 3; j++ 
          if i == 2 && j == 3 
             continue LABEL
          
          fmt.Printf("continue02 ==> i: %v, j: %v\\n", i, j)
       
    
 
 
 func main() 
    continue01()
    continue02()
 

 

Go 循环语句

Go 循环语句

 

一、概述

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

循环程序的流程图:

 

 

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

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


1. 循环控制语句
循环控制语句可以控制循环体内语句的执行过程。

GO 语言支持以下几种循环控制语句:

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


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

示例

package main

import (
	"fmt"
	"time"
)

func main() 
	i := 0
	for true  		//for后面true为可选,若不加,默认为true
		fmt.Printf("i: %v\\n", i)
		i++
		time.Sleep(time.Second)
	


//输出结果如下
i: 0
i: 1
i: 2
i: 3
i: 4
i: 5
i: 6
i: 7
....
....
....

 

二、Go 语言 for 循环


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

语法:

//Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号
//和 C 语言的 for 一样:

for init; condition; post  


//和 C 的 while 一样:
for condition  


//和 C 的 for(;;) 一样:
for  
  • init: 一般为赋值表达式,给控制变量赋初值
  • condition: 关系表达式或逻辑表达式,循环控制条件
  • post:一般为赋值表达式,给控制变量增量或减量。

 

2. for语句执行过程
① 先对表达式 1 赋初值;

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

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

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


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

 

 

3. 示例
计算 1 到 10 的数字之和

package main

import "fmt"

func main() 
	sum := 0
	for i := 0; i <= 10; i++ 
		sum += i
	
	fmt.Printf("sum: %v\\n", sum)


//输出结果为:
55

-----------------------------------------------------------------------------------------------
//int 和 post 参数是可选的,我们可以直接省略他,类型while语句

package main

import "fmt"

func main() 
	sum := 0
	i := 1
	for i <= 10 
		sum += i
		i++
	
	fmt.Printf("sum: %v\\n", sum)

  

计算0-100间偶数的和

//求出0-100的偶数和

package main

import "fmt"

func main() 
	a := 0
	for i := 1; i <= 100; i++ 
		if i%2 == 0 
			a += i
		
	
	fmt.Printf("a: %v\\n", a)


//输出结果如下
2550

--------------------------------------------------------------------------------------------
//方法二
package main

import "fmt"

func main() 
	sum := 0
	for i := 0; i <= 100; i += 2 
		sum += i
	
	fmt.Printf("sum: %v\\n", sum)

  

4. For-each range 循环
这种格式的循环可以对字符串、数组、切片等进行迭代输出元素

示例

//循环数组
package main

import "fmt"

func main() 
	names := []int20, 30, 40, 50, 60
	//a获取key,b获取value
	for a, b := range names 
		fmt.Print("key:", a, "  value:", b, "\\n")
	


//输出结果如下
key:0  value:20
key:1  value:30
key:2  value:40
key:3  value:50
key:4  value:60

  

//使用空白标识符直接获取value
package main

import "fmt"

func main() 
	names := []int20, 30, 40, 50, 60
	//a获取key,b获取value
	for _, b := range names 
		fmt.Print("value:", b, "\\n")
	


//输出结果
value:20
value:30
value:40
value:50
value:60

  

以上是关于Go笔记:循环语句的主要内容,如果未能解决你的问题,请参考以下文章

go语言学习笔记 — 基础 — 控制流:for循环语句

GO学习笔记 - Go 只有一种循环结构—— for 循环。

go语言学习笔记 — 基础 — 控制流:goto跳转语句

go语言学习笔记 — 基础 — 控制流:流程控制

Go语言自学系列 | golang for循环语句

Go语言笔记