golang笔记-流程控制

打印 上一主题 下一主题

主题 1008|帖子 1008|积分 3024

1. 分支布局 

1.1.  if 单分支布局

  1. package main
  2. import "fmt"
  3. func main() {
  4.         var count int = 20
  5.         // 单分支结构 if 表达式 {....} 区别java 表达式的() 建议省略
  6.         // 表达式为true 执行 {} 中的内容 表达式为false {}中的代码不执行
  7.         if count < 30 {
  8.                 fmt.Println("对不起 口罩库存不足")
  9.         }
  10.         //在golang中,if后面可以并列加入变量的定义 变量定义和表达式使用 英文分号 分隔
  11.         if count2 := 20; count2 < 30 {
  12.                 fmt.Println("对不起 口罩库存不足")
  13.         }
  14. }
复制代码
1.2. if-else 双分支布局

  1. package main
  2. import "fmt"
  3. func main() {
  4.         // 双分支结构
  5.         // 表达式为 true 执行 if后边 {} 中的内容,表达是为false 执行 else {} 中的内容
  6.         if count := 30; count < 30 {
  7.                 fmt.Printf("库存充足")
  8.         } else { //else必须跟在if的 花括号后边,不能换行,换行会报错
  9.                 fmt.Printf("库存不足")
  10.         }
  11. }
复制代码
1.3. if- else if -else多分支布局

  1. package main
  2. import "fmt"
  3. func main() {
  4.         var score int = 77
  5.         // 多个分支
  6.         // 只会执行第一个为true的分支,后续代码阻断执行
  7.         if score >= 90 {
  8.                 fmt.Println("您的成绩为A级别")
  9.         } else if score >= 80 {
  10.                 fmt.Println("您的成绩为B级别")
  11.         } else if score >= 70 {
  12.                 fmt.Println("您的成绩为C级别")
  13.         } else if score >= 60 {
  14.                 fmt.Println("您的成绩为D级别")
  15.         } else {
  16.                 fmt.Println("您的成绩为E级别")
  17.         }
  18. }
复制代码
1.4. switch分支

  1. package main
  2. import "fmt"
  3. func main() {
  4.         var score int = 66
  5.         // switch 后边跟表达式\常量\变量\有返回值函数,表达式不需要加(),表达式的结果依次跟case比较,满足结果执行:后边的代码
  6.         //case 后边跟常量 要求不能重复
  7.         //case 后边跟变量 要求数据类型需要一致
  8.         //case 后边可以跟多个值,使用逗号分隔
  9.         //case 区别于java不需要 break 关键字预防case穿透
  10.         // default 兜底分支 不是必须的
  11.         switch score / 10 {
  12.         case 10:
  13.                 fmt.Println("您的等级为A级")
  14.         case 9:
  15.                 fmt.Println("您的等级为B级")
  16.         case 8:
  17.                 fmt.Println("您的等级为C级")
  18.         case 7, 6:
  19.                 fmt.Println("您的等级为D级")
  20.         default:
  21.                 fmt.Println("您的等级为E级")
  22.         }
  23.         // switch 可以不带表达式,case后边跟bool表达式,当if分支使用
  24.         var b int = 10
  25.         switch {
  26.         case b == 1:
  27.                 fmt.Println("case b == 1")
  28.         case b == 2:
  29.                 fmt.Println("case b == 2")
  30.         default:
  31.                 fmt.Printf("default:%v", b)
  32.         }
  33.         //switch 后边可以直接声明变量 使用英文分号结束,case 后需要跟和这个变量相关的 bool 表达式
  34.         switch c := 7; {
  35.         case c > 1:
  36.                 fmt.Println("switch c := 7;")
  37.         }
  38.         //使用 fallthrough 达到case穿透的效果,只穿透他所在的case
  39.         switch c := 7; {
  40.         case c > 7:
  41.                 fmt.Println("switch c := 7;")
  42.                 fallthrough
  43.         case c > 6:
  44.                 fmt.Println("fallthrough")
  45.         case c > 5:
  46.                 fmt.Println("fallthrough")
  47.         }
  48. }
复制代码

2. 循环布局 

2.1. for循环

  1. package main
  2. import "fmt"
  3. func main() {
  4.         /**
  5.         for循环语法格式: for 初始表达式;布尔表达式;迭代因子{循环体......}
  6.         for的初始表达式 必须使用 :=的格式赋值,不能使用var
  7.         */
  8.         var sum int
  9.         for i := 0; i < 10; i++ {
  10.                 sum += i
  11.         }
  12.         fmt.Printf("sum最终的值为:%d", sum)
  13. }
复制代码
2.2. for range循环

  1. package main
  2. import "fmt"
  3. func main() {
  4.         // 普通for循环按照字节进行遍历  “你好”中文会乱码
  5.         var str string = "hello golang你好"
  6.         for i := 0; i < len(str); i++ {
  7.                 fmt.Printf("%c \n", str[i])
  8.         }
  9.         //for range 可以遍历数组、切片、字符串、map及通道
  10.         // for range语法 for key val:= range 变量名
  11.         // 遍历str,遍历的每个结果下标被key接收,遍历的结果具体数值被value接收
  12.         for key, value := range str {
  13.                 fmt.Printf("索引为:%d,值为:%c \n", key, value)
  14.         }
  15. }
复制代码

3. 循环控制 

break:结束当前循环
continue:跳过本次循环,继承下一次循环
return:结束本次运行
goto:goto 跳转到指定行代码,配合标签利用,不发起利用
  1. package main
  2. import (
  3.         "fmt"
  4. )
  5. func main() {
  6.         /**
  7.         break 结束循环
  8.         */
  9.         var sum int = 0
  10.         for i := 0; i <= 100; i++ {
  11.                 sum += i
  12.                 fmt.Println(sum)
  13.                 if sum >= 300 {
  14.                         break
  15.                 }
  16.         }
  17.         fmt.Println("-----------ok")
  18.         /*
  19.                 break 标签 结束对应标签的循环
  20.         */
  21. lable1:
  22.         for i := 0; i < 100; i++ {
  23.         lable2:
  24.                 for j := 0; j < 100; i++ {
  25.                         if i+j > 100 {
  26.                                 break lable2
  27.                         }
  28.                         if i > 50 {
  29.                                 break lable1
  30.                         }
  31.                 }
  32.         }
  33.         /*
  34.                 continue 跳过本次循环,继续下次循环 ,也可以加标签
  35.         */
  36.         for i := 0; i < 100; i++ {
  37.                 if i%6 != 0 {
  38.                         continue
  39.                 }
  40.                 fmt.Println(i)
  41.         }
  42.         /*
  43.                 goto 跳转到指定行代码,配合标签使用,不建议使用
  44.         */
  45.         /*
  46.                 return 结束程序执行
  47.         */
  48. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表