1.6 多重循环控制

1.6.1 概念解析

1)多重循环就是指将一个循环嵌套在另一个循环体内,就形成了嵌套循环。在外边的for循环称之为外层for循环,在里面的for循环称之为内层for循环。2)实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。3)外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次

1.6.2 案例

1.6.2.1 循环打印九九乘法表

  • 说明
循环打印九九乘法表,显示效果如下图所示

九九乘法表

  • 案例演示
package mainimport "fmt"/**for 循环演示案例*/func main(){ //打印九九乘法表 for i:=1;i<=9;i++{ //表示循环9次,即:根据图示,我们需要有九行数据 for m:=1;m<=i;m++{ // 对每一行循环,我们需要展示每一列的数据,即当行数等于2时,将会打印2*1,2*2的数据 fmt.Print(i,"×",m,"=",i*m,"") // 将数据展示出来:1*1=1(记住,这里每打印一次不要换行),:表示制表符 } fmt.Println() //内循环后,才开始换行。表示进入下一行数据的展示 }}

1.6.2.2 统计班级学生成绩

  • 说明
统计3个班级的学生平均成绩,每个班级假定有3名学生。学生成绩从控制台输入
  • 案例演示
package mainimport "fmt"/**多重嵌套循环*/func main(){ // 统计3个班级中,每个班级的平均分数 var classCount int = 3 // 定义班级数量 var stuCount int = 3 // 定义班级人员 for i:=1;i<=classCount;i++{  var NumScore float64 for m:=1;m<=stuCount;m++{ var score float64 fmt.Print("请输入班级第",m,"位学生成绩:") fmt.Scanln(&score) NumScore = NumScore + score } fmt.Println("第",i,"个班级的平均成绩为:",NumScore/float64(stuCount)) }}

1.7 跳转控制语句

1.7.1 break

1.7.1.1 基本介绍

break语句用于终止某个语句块的执行,用于中断当前for循环的语句

1.7.1.2 扩展说明

1)如果有多重循环,break默认跳出最近的for循环2)break后面可以指定标签,跳出标签对应的for循环

1.7.1.3 流程图

break跳出循环示意图

1.7.1.3 案例演示

  • 案例说明
使用标签跳出对应的for循环
  • 案例演示
lable:for i:=0;i<10;i++{  for j :=0;j<10;j++{  if j== 2{  break lable  }  fmt.Println("j=",j)  }}

1.7.1.4 课堂练习

1)将100以内的数值进行求和,求当和第一次大于66的当前数值。例如:1+2+3+4+5+6=21,即大于20,那么这个数为62)当我们到ATM机上取钱时,如果密码连续输错三次,那么将会锁住密码。我们这里模拟一下,当密码连续输错三次,将无法再次输出,且每输错一次将提示"密码错误,还剩几次机会"。3)假定账户密码为:666666

1.7.2 continue

1.7.2.1 基本介绍

continue用于结束本次循环,继续执行下一次循环

1.7.2.2 流程图

continue流程示意图

1.7.2.3 案例说明

  • 案例说明
实现打印1~100之内的奇数[要求实现for循环+continue实现]
  • 代码演示
package mainimport "fmt"/**continue案例演示*/func main(){ for i:=1;i<=100;i++{  if i%2 == 0{  continue  }  fmt.Println("奇数是:",i) }}

1.7.3 goto

1.7.3.1 基本介绍

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

1.7.3.2 基本语法

goto label ======> 指开始标注的地点..............................label:statement ======> 指跳转到的目的地

1.7.3.3 基本流程

goto流程示意图

1.7.3.4 案例演示

  • 案例说明
使用goto跳转到指定位置
  • 案例演示
package mainimport "fmt"func main(){ var temp int = 20 fmt.Println("数据1") if temp > 10{ goto label1 } fmt.Println("数据2") fmt.Println("数据3") label1: fmt.Println("数据4") fmt.Println("数据5") fmt.Println("数据6")}// 当使用了goto后,我们从结果发现,"数据2"、"数据3"并没有打印出来,而是直接跳过了这段代码

1.87.3.5 小结

对于goto,学过HTML的同学可能会想起锚点。goto类似于锚点,在第一个地方抛锚,告诉程序快速进入到哪一块代码

1.7.4 return

1.7.4.1 介绍

return使用在方法或者函数中,表示跳出所在的方法或函数

1.7.4.2 说明

1)如果return是在普通的函数,则表示跳出该函数,即不再执行函数中return后面代码,也可以理解成终止函数。2)如果return是在main函数,表示终止main函数,也就是说终止程序。

1.7.4.3 案例

package mainimport "fmt"/**return控制器*/func main(){ var temp int = 0 fmt.Println("循环前的temp的值为:",temp) for a := 0;a<10 ;a++ { temp++  //如果去掉该判断,那么结果又会是怎么样? if temp==6 { return } fmt.Println("获取数据:",a) } fmt.Println("改变后的temp的值为:",temp)}

打印结果为:

循环前的temp的值为: 0 获取数据: 0 获取数据: 1 获取数据: 2 获取数据: 3 获取数据: 4 获取数据: 5 获取数据: 6 获取数据: 7 获取数据: 8 获取数据: 9
  • 问题一:为什么没有打印 "改变后的temp的值为:"这句话?
因为return语句存在main函数中,将会终止该函数中需要执行的代码。因此不会打印后面的语句内容

· 问题二:如果去除上述代码for循环中的判断语句,结果又是怎么样?

循环前的temp的值为: 0 获取数据: 0 获取数据: 1 获取数据: 2 获取数据: 3 获取数据: 4 获取数据: 5 获取数据: 6 获取数据: 7 获取数据: 8 获取数据: 9 改变后的temp的值为: 10

去除循环语句中的判断语句后,打印出:"改变后的temp的值为: 10"(如上)


往期内容传送门

go语言基础:流程控制(1)-流程控制入门

go语言基础:流程控制(2)-多分支

go语言基础:流程控制(3)-switch分支控制&for循环

go语言打印日期_go语言基础:流程控制(4)-多重循环跳转控制相关推荐

  1. go语言视频教程_ go语言入门视频教程_go语言实战视频教程

    许多人可能知道go语言的优点在哪里,但他们不知道go语言适合在哪里使用.通过学习go语言视频教程,可以清楚的知道go语言主要用于服务器端开发,其定位是用来开发"大型软件".学习go ...

  2. go语言打印日期_判定是否掌握Go语言的最重要标准:对并发的掌握

    并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因. Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天) ...

  3. go语言打印日期_基于 Go 语言开发在线论坛(八):消息、视图及日期时间本地化...

    我们接着上篇在线论坛的进度,由于之前所有页面和消息文本都是英文的,而我们开发的应用基本都是面向中文用户的,所以需要对项目进行本地化,今天正好借着这个入门项目给大家介绍下如何在 Go Web 应用中进行 ...

  4. JAVA基础——最简单的多重循环程序

    Java 循环语句之多重循环 循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: ...

  5. go语言打印日期_ZEBRA打印机前置USB 直连扫描枪打印

    最近又不断有客户来问如何用ZT410 的前置USB口连接扫描枪打印变量数据,今天再发一下. 1. 准备打印模板, ^XA ^DFE:ZT410SN.ZPL ^FT100,180^A0N,40,40^F ...

  6. go语言入门经典_Go 语言中的 gRPC 基础入门

    01 为什么使用 gRPC? 借助 gRPC,我们可以在 .proto 文件中一次定义我们的服务,并以 gRPC 支持的任何语言生成客户端和服务器代码,无论是在大型数据中心内的服务器,还是在个人的电脑 ...

  7. go语言字符串换行_Go语言字符串高效拼接(一)

    在我们编程的时候,和字符串打交道是必不可少的,我们对数据库里文本的处理,Web文本的显示,文本数据的存储等都需要和字符串打交道,那么对于字符串来说,查找.拼接这些都是常用的操作,尤其是以拼接使用的比较 ...

  8. java语言打印图形_JAVA语言入门教程之打印图形实例——打印矩形

    本文主要向大家介绍了JAVA语言入门教程之打印图形实例--打印矩形,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 输出矩形: public class Rect { public s ...

  9. go语言复数包_Go语言中包的风格指南

    Go 语言也有自己的命名与代码组织规则.漂亮的代码,布局清晰.易读易懂,就像是设计严谨的 API 一样.拿到代码,用户首先看到和接触的就是布局.命名还有包的结构. 这篇文章不是为了给大家设立硬性的规定 ...

最新文章

  1. 计算机视觉知识点总结
  2. 【点播系列之一】关于阿里视频云点播解决方案,你想知道的都在这里!
  3. C语言-运算符优先级及注意事项
  4. shrio初体验(2)Realm
  5. 2014年第五届蓝桥杯C/C++ A组国赛 —— 第一题:海盗分金币
  6. setfacl 权限导出_Linux如何使用setfacl命令创建权限文件
  7. c#枚举数字转枚举_C#枚举能力问题和解答 套装4
  8. c语言中如何用字母代替加减乘除的符号,c语言加减乘除代码
  9. Quartz的时间配置
  10. 闩锁效应的产生原因及解决办法
  11. 三相异步电动机的公式
  12. edittext 内容长度
  13. 微软Kinect完全拆解
  14. 2020年南京大学计算机系九推面试
  15. 苹果手机滑动光标怎么设置_iPhone手机三种方便又准确的移动光标方式
  16. java中paint_Java中paint怎么用
  17. 学习:数学----欧拉定理与扩展欧拉定理
  18. 宝可梦探险寻宝料理php,宝可梦探险寻宝所有料理配方汇总 超梦等稀有烹饪配方...
  19. 线上服务器CPU负载过高的问题解决过程
  20. 我眼中的算法导论 | 第一章——算法在计算中的作用、第二章——算法基础

热门文章

  1. 如何去掉UITableViewController中的分隔线setSeparatorStyle
  2. SpringBoot实践 - SpringBoot+MySql+Redis
  3. UVA 11237 - Halloween treats(鸽笼原理)
  4. 关于头文件的一道选择题
  5. LeetCode OJ - Surrounded Regions
  6. EasyUI的DataGrid 分页栏英文改中文解决方案
  7. 【干货】史上最全个性化推荐技术资料包(附50余份技术文档下载链接)
  8. 【干货】如何从0到1构建用户画像系统.pdf(附76页pdf下载链接)
  9. 【白皮书分享】5G智慧城市安全需求与架构白皮书.pdf(附下载链接)
  10. 一个年轻人为什么毫无欲望?