博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go 循环控制
阅读量:4664 次
发布时间:2019-06-09

本文共 2733 字,大约阅读时间需要 9 分钟。

#### Go 循环控制 昨天有工作要忙, 断更一天,不过学习的事情,还是每天要坚持;  我还有头发, 还能学习^_^. ***倘若我心中的山水, 你眼中都看到*** 上一节学习完流程控制,总结一下switch 和 if  的区别; 1. 如果判断的具体数值不多, 而且符合整数,浮点数,字符,字符串这几种类型,建议使用switch语句; 2. 其它情况如: 区间判断和结果为bool类型的判断使用if; --- ##### for 循环控制 在Go 中只有一种循环,就是for 循环,这符合Go 的哲学思想: 少即是多; for 基本语法: for 循环变量初始化;循环条件;循环变量迭代{      // 循环语句  }  for 循环执行流程分析

for 循环注意事项和细节 1. for 条件循环返回的是一个bool 类型的表达式 2. for 循环的另一种使用方式 for 循环判断条件 {      // 循环语句  }  3. for 循环的第三种写法,类似于无限循环, 可以配合break 使用; for {      // 循环语句  } 4. for range 方式可以方便遍历字符串和数组 5. 如果字符串含有中文,使用传统的方式遍历字符串是错误的,会出现乱码: ***传统的方式对字符串的遍历是按照字节遍历,但是一个汉字在utf8中对应的编码为3个字节;**     将 str 转成[]rune 切片即可;
package mainimport "fmt"func main(){   for i:=0;i<10;i++{      fmt.Println(i)   }   // for 循环的第二种写法   var a = 1   for a < 10 {      fmt.Println(a)      a ++   }   // for 循环的第三种写法   // 这种写法等价于无限循环, 可以配合break 使用   var b = 1   for {      if b >= 10 {         break      }      b ++   }   // for range   var c = "abcdef"   for i,val := range c {      fmt.Printf("index=%d value=%c\n",i,val)   }   // 对于有中文的字符串遍历方式   var d = "你好,世界!"   // 传统方式   str := []rune(d)   for i:=0;i

  

##### while 的实现 Go 中没有while 或者while do 这种 语法, 但是可以通过for 循环来实现这种效果,见for 循环第三种方式;  ##### 多层循环 将一个循环放在另一个循环体内,形成循环嵌套, 在外面的for 称为外层循环,在里面的for 称为内层循环,多重循环建议最多不超过3层;  外层循环次数为m 次, 内层为n次, 则内层循环体实际需要执行m*n 次;
package mainimport "fmt"func main(){   for i :=1;i<10;i++{      for j :=1;j<=i;j++{         fmt.Printf("%d * %d = %d\t",j,i,i*j)      }      fmt.Println()   }}

  

##### break

break 用于中断当前for 或跳出switch 语句;  默认情况下break 跳出最近的for 循环;当break 出现在多层循环中, 可以通过标签指明要终止哪一层循环;
package mainimport "fmt"func main(){   // 设置标签   first:      for i:=0;i<10;i++{         for j:=0;j<10;j++{            if j == 3 {               break first // 按标跳出            }            fmt.Println(j)         }      }}

  

##### continue

continue 用于结束本次循环,继续执行下一次循环;默认情况下路过的是最近循环,当contine 出现在多层循环中, 可以通过标签指定要路过哪一层循环;
package mainimport (   "fmt"   "strings")func main() {   for i := 0; i < 10; i++ {      for j := 0; j < 10; j++ {         if j == 3 {            continue         }         fmt.Println(j)      }   }   fmt.Println(strings.Repeat("=",100))   first:      for i := 0; i < 10; i++ {         for j := 0; j < 10; j++ {            if j == 3 {               continue first // continue 使用标签             }            fmt.Println(j)         }      }}

  

##### goto 语句 Go 中可以使用goto 语句无条件转移到程序中指定的行 通常与条件语句配合使用;  在Go 中不建议使用goto 以免造成程序流程混乱,使理解和调试困难;
package mainimport "fmt"func main() {   for i:=1;i<10;i++{      if i % 2 == 0 {         goto first      } else {         fmt.Println(i)      }   }   first:      fmt.Println("this is goto block")}

  

流程控制这块基本学习完啦, 下面我们将逐渐接触高级知识;  最近在写微信公众号,欢迎大家关注,一同交流学习;

***学习,我们一直在路上***

转载于:https://www.cnblogs.com/Mail-maomao/p/11376222.html

你可能感兴趣的文章
POI向Excel的单元格中写入图片
查看>>
java中如何设置HTTP协议的头信息(header)
查看>>
java解析json数据
查看>>
让Storm插上CEP的翅膀 - Siddhi调研和集成
查看>>
java学习笔记38(sql注入攻击及解决方法)
查看>>
c++和java的区别
查看>>
瑞斯康达:高质量视频监控的接入优化
查看>>
hbase首次导入大批次的数据成功!
查看>>
指针与引用的区别
查看>>
Aspectj的aop操作
查看>>
带着问题读CLR via C#(二)类型基础
查看>>
PHP扩展编写、PHP扩展调试、VLD源码分析、基于嵌入式Embed SAPI实现opcode查看
查看>>
通宵教室(ACM水题)
查看>>
类型判断
查看>>
c#截取后台窗口的图片
查看>>
css3中的动画 @keyframes animation
查看>>
虚拟机内 docker启动 局域网无发访问 问题解决
查看>>
whu Problem 1537 - A - Stones I 贪心
查看>>
Codeforces Round #341 (Div. 2) E. Wet Shark and Blocks dp+矩阵加速
查看>>
LeetCode Online Judge 题目C# 练习 - Plus One
查看>>