Go语言循环语句

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句,以下为大多数编程语言循环程序的流程如:

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

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

循环控制语句

循环控制语句可以控制循环体内语句的执行过程,Go语言支持以下几种循环控制语句:

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

无限循环

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

package main

import "fmt"

func main() {
for true {
fmt.Printf("这是无限循环。\n")
}
}

Go语言for循环

for循环时一个循环控制结构,可以执行指定次数的循环,Go语言的for循环有3中形式,只有其中的一种使用分号,其语法如下所示:

1、和C语言的for一样:

for init; condition; post { }

2、和C的while一样:

for condition { }

3、和C的for(;;)一样:

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

for语句执行过程如下:

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

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

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

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

代码实例:

package main

import "fmt"

func main()  {
var a int
var b int = 15 numbers := [6]int{1, 2, 3, 5} /* for 循环 */
for a :=0; a < 10; a++ {
fmt.Printf("a 的值为:%d\n", a)
} for a < b {
a++
fmt.Printf("a 的值为:%d\n", a)
} for i, x:= range numbers{
fmt.Printf("第 %d 位 x 的值 =%d\n", i, x)
}
}

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

a 的值为:0
a 的值为:1
a 的值为:2
a 的值为:3
a 的值为:4
a 的值为:5
a 的值为:6
a 的值为:7
a 的值为:8
a 的值为:9
a 的值为:1
a 的值为:2
a 的值为:3
a 的值为:4
a 的值为:5
a 的值为:6
a 的值为:7
a 的值为:8
a 的值为:9
a 的值为:10
a 的值为:11
a 的值为:12
a 的值为:13
a 的值为:14
a 的值为:15
第 0 位 x 的值 =1
第 1 位 x 的值 =2
第 2 位 x 的值 =3
第 3 位 x 的值 =5
第 4 位 x 的值 =0
第 5 位 x 的值 =0

Go语言循环嵌套

Go语言允许用户再循环内使用循环,其语法如下:

for [conditon | (init; condition; increment) |Range]{
for [condition | (init; condition; increment) | Range]{
statement(s)
}
statement(s)
}

代码实例:

使用循环嵌套来输出2到100间的素数:

package main

import "fmt"

func main()  {
/* 定义局部变量 */
var i, j int for i=2; i < 100; i++{
for j=2; j <= (i/j); j++ {
if (i%j==0){
break // 如果发现因子,则不是素数
}
}
if (j > (i/j)){
fmt.Printf("%d 是素数\n", i)
}
}
}

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

2 是素数
3 是素数
5 是素数
7 是素数
11 是素数
13 是素数
17 是素数
19 是素数
23 是素数
29 是素数
31 是素数
37 是素数
41 是素数
43 是素数
47 是素数
53 是素数
59 是素数
61 是素数
67 是素数
71 是素数
73 是素数
79 是素数
83 是素数
89 是素数
97 是素数

Go语言break语句

Go语言中break语句用于以下两方面:

1、用于循环语句中跳出循环,并开始执行循环之后的语句;

2、break再switch(开关语句)中在执行一条case后跳出语句的作用;

其语法如下所示:

break

break语句流程图如下:

代码实例:

package main

import "fmt"

func main()  {
/* 定义局部变量 */
var a int = 10 /* for循环 */
for a < 20 {
fmt.Printf("a 的值位:%d\n", a)
a++
if a > 15 {
/* 使用break语句跳出循环 */
break
}
}
}

以上实例执行结果为:

a 的值位:10
a 的值位:11
a 的值位:12
a 的值位:13
a 的值位:14
a 的值位:15

Go语言continue语句

Go语言的continue语句有点像break语句,但是continue不是跳出循环,而是跳过当前循环执行下一次循环语句。for循环中,执行continue语句会触发for增量语句的执行,其语法如下:

continue

continue语句流程图如下所示:

代码实例:

package main

import (
"fmt"
) func main() {
/* 定义局部变量 */
var a int = 10 /* for 循环 */
for a < 20 {
if a == 15 {
/* 跳过此次循环 */
a = a + 1
continue
}
fmt.Printf("a 的值为:%d\n", a)
a++
}
}

以上实例执行结果为:

a 的值为:10
a 的值为:11
a 的值为:12
a 的值为:13
a 的值为:14
a 的值为:16
a 的值为:17
a 的值为:18
a 的值为:19

Go语言goto语句

Go语言的goto语句可以无条件地转移到过程中指定的行,goto语句通常与条件语句配合使用。可以用来实现条件转移,构成循环,跳出循环体等功能。但是,在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试都产生困难。goto语法格式如下:

goto label
..
.
label:statement

其流程图如下:

代码实例:

package main

import "fmt"

func main()  {
/* 定义局部变量 */
var a int = 10 /* 循环 */
LOOP: for a < 20 {
if a == 15 {
/* 跳过迭代 */
a = a + 1
goto LOOP
}
fmt.Printf("a 的值为:%d\n", a)
a++
}
}

以上实例执行结果为:

a 的值为:10
a 的值为:11
a 的值为:12
a 的值为:13
a 的值为:14
a 的值为:16
a 的值为:17
a 的值为:18
a 的值为:19

Go语言【第六篇】:Go循环语句的更多相关文章

  1. Python开发【第六篇】循环语句

    while 语句 注意事项:1.要控制循环的真值表达式的值来防止死循环 ​ 2.通常用真值表达式内的循环变量来控制循环条件 ​ 3.通常在语句内部改变循环变量 ​ 4.只要是语句都可以互相嵌套 whi ...

  2. Python学习【第五篇】循环语句

    Python循环语句 接下来将介绍Python的循环语句,程序在一般情况下是按顺序执行的. 编程语言提供了各种控制结构,允许更复杂的执行路径. 循环语句允许我们执行一个语句或语句组多次. Python ...

  3. R语言(自定义函数、循环语句、管道函数)

    学习R语言半年多了,以前比较注重统计方法上的学习,但是最近感觉一些基础知识也很重要.去年的参考资料是<R语言实战>,今年主要是看视频.推荐网易云课堂里的教程,很多资料都是很良心的~ 目前学 ...

  4. C语言 第六章 多重循环练习

    一.循环输入 #include "stdio.h" void main() { char c; do { printf("我告诉你1+1=2\n"); prin ...

  5. C语言 第六章 多重循环

    一.概要 在c语言中,if,switch,for,while,do-while可以相互间多次嵌套. if(){ for() { for() { } } } while() { for(){ } for ...

  6. [零基础学JAVA]Java SE基础部分-04. 分支、循环语句

    转自:http://redking.blog.51cto.com/27212/116751 1.课程名称:分支.循环 本季为JAVA程序中最重要的部分,在讲解的时候除了讲解各种主要的控制语句(分支语句 ...

  7. 新手入门C语言第八章:C循环

    一.C 循环 有的时候,我们可能需要多次执行同一块代码.一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推.编程语言提供了更为复杂执行路径的多种控制结构.循环语句允许 ...

  8. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  9. Verilog学习笔记基本语法篇(六)········ 循环语句

    在Verilog中存在着4种类型的循环语句,用来控制执行语句的执行次数. 1)forever语句: 连续执行的语句. 2)repeat语句:  连续执行n次的语句. 3)while语句:    执行语 ...

随机推荐

  1. WPF Prism MVVM 中 弹出新窗体. 放入用户控件

    原文:WPF Prism MVVM 中 弹出新窗体. 放入用户控件 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_37214567/artic ...

  2. 长沙Uber优步司机奖励政策(1月11日~1月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  3. 西安Uber优步司机奖励政策(8月10日到8月16日)

    1) 工作日(周一到周五)早高峰时间段(7点到9:30点).晚高峰时间段(5点到8点)车费 2.0 倍,每单奖励部分上限35元 例:在高峰时段中,假设行程基本车费为¥15,只要达到奖励前提,最后你将获 ...

  4. C#防止程序重新运行

    //禁止重复运行 bool ret; Mutex mutex = new Mutex(true, Application.ProductName, out ret); if (ret) { Appli ...

  5. Qt-第一个QML程序-4-自定义按钮类,动画,状态

    上篇中,我们写到了自己定义了一个按钮,但是呢,按照这样的写法,要写一个程序出来,那要累死了,所以,qml给我的感觉就是各种随便调用,所以了,可以自己写一个自己Button的qml,这样在以后用到了,就 ...

  6. MaxScript代码补全插件

    MaxScript代码补全插件 作者Nik,原文发布于ScriptSpot 安装后max自带脚本编辑器会有自动补全,效果如下:

  7. (C#)设计模式之装饰模式

    1.装饰模式 动态的给一个对象添加一些额外的职责,就添加功能来说,装饰模式比生成子类更加灵活.*装饰模式是为已有功能动态添加更多功能的一种方式.*装饰模式将原有类中的核心职责与装饰功能分离.简化了原有 ...

  8. Python常用函数--return 语句

    在Python教程中return 语句是函数中常用的一个语句.return 语句用于从函数中返回,也就是中断函数.我们也可以选择在中断函数时从函数中返回一个值.案例(保存为 function_retu ...

  9. 银行系统ps:不太完善,蟹蟹评论

    # 主程序运行 import time from guanli import GuanLi from atm import ATM from user import User def main(): ...

  10. 使用js跳转手机站url的若干注意点

    引子: 去年年底公司开发手机站平台,经历了前期的用户群.市场调查,产品需求分析,产品原型设计,ui前端到程序开发上线测试等等工作,终于上线...此处略去本人作为前端开发的心情. 应该说,我们的手机站平 ...