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笔记:循环语句的主要内容,如果未能解决你的问题,请参考以下文章