1. 分支布局
1.1. if 单分支布局
- package main
- import "fmt"
- func main() {
- var count int = 20
- // 单分支结构 if 表达式 {....} 区别java 表达式的() 建议省略
- // 表达式为true 执行 {} 中的内容 表达式为false {}中的代码不执行
- if count < 30 {
- fmt.Println("对不起 口罩库存不足")
- }
- //在golang中,if后面可以并列加入变量的定义 变量定义和表达式使用 英文分号 分隔
- if count2 := 20; count2 < 30 {
- fmt.Println("对不起 口罩库存不足")
- }
- }
复制代码 1.2. if-else 双分支布局
- package main
- import "fmt"
- func main() {
- // 双分支结构
- // 表达式为 true 执行 if后边 {} 中的内容,表达是为false 执行 else {} 中的内容
- if count := 30; count < 30 {
- fmt.Printf("库存充足")
- } else { //else必须跟在if的 花括号后边,不能换行,换行会报错
- fmt.Printf("库存不足")
- }
- }
复制代码 1.3. if- else if -else多分支布局
- package main
- import "fmt"
- func main() {
- var score int = 77
- // 多个分支
- // 只会执行第一个为true的分支,后续代码阻断执行
- if score >= 90 {
- fmt.Println("您的成绩为A级别")
- } else if score >= 80 {
- fmt.Println("您的成绩为B级别")
- } else if score >= 70 {
- fmt.Println("您的成绩为C级别")
- } else if score >= 60 {
- fmt.Println("您的成绩为D级别")
- } else {
- fmt.Println("您的成绩为E级别")
- }
- }
复制代码 1.4. switch分支
- package main
- import "fmt"
- func main() {
- var score int = 66
- // switch 后边跟表达式\常量\变量\有返回值函数,表达式不需要加(),表达式的结果依次跟case比较,满足结果执行:后边的代码
- //case 后边跟常量 要求不能重复
- //case 后边跟变量 要求数据类型需要一致
- //case 后边可以跟多个值,使用逗号分隔
- //case 区别于java不需要 break 关键字预防case穿透
- // default 兜底分支 不是必须的
- switch score / 10 {
- case 10:
- fmt.Println("您的等级为A级")
- case 9:
- fmt.Println("您的等级为B级")
- case 8:
- fmt.Println("您的等级为C级")
- case 7, 6:
- fmt.Println("您的等级为D级")
- default:
- fmt.Println("您的等级为E级")
- }
- // switch 可以不带表达式,case后边跟bool表达式,当if分支使用
- var b int = 10
- switch {
- case b == 1:
- fmt.Println("case b == 1")
- case b == 2:
- fmt.Println("case b == 2")
- default:
- fmt.Printf("default:%v", b)
- }
- //switch 后边可以直接声明变量 使用英文分号结束,case 后需要跟和这个变量相关的 bool 表达式
- switch c := 7; {
- case c > 1:
- fmt.Println("switch c := 7;")
- }
- //使用 fallthrough 达到case穿透的效果,只穿透他所在的case
- switch c := 7; {
- case c > 7:
- fmt.Println("switch c := 7;")
- fallthrough
- case c > 6:
- fmt.Println("fallthrough")
- case c > 5:
- fmt.Println("fallthrough")
- }
- }
复制代码
2. 循环布局
2.1. for循环
- package main
- import "fmt"
- func main() {
- /**
- for循环语法格式: for 初始表达式;布尔表达式;迭代因子{循环体......}
- for的初始表达式 必须使用 :=的格式赋值,不能使用var
- */
- var sum int
- for i := 0; i < 10; i++ {
- sum += i
- }
- fmt.Printf("sum最终的值为:%d", sum)
- }
复制代码 2.2. for range循环
- package main
- import "fmt"
- func main() {
- // 普通for循环按照字节进行遍历 “你好”中文会乱码
- var str string = "hello golang你好"
- for i := 0; i < len(str); i++ {
- fmt.Printf("%c \n", str[i])
- }
- //for range 可以遍历数组、切片、字符串、map及通道
- // for range语法 for key val:= range 变量名
- // 遍历str,遍历的每个结果下标被key接收,遍历的结果具体数值被value接收
- for key, value := range str {
- fmt.Printf("索引为:%d,值为:%c \n", key, value)
- }
- }
复制代码
3. 循环控制
break:结束当前循环
continue:跳过本次循环,继承下一次循环
return:结束本次运行
goto:goto 跳转到指定行代码,配合标签利用,不发起利用
- package main
- import (
- "fmt"
- )
- func main() {
- /**
- break 结束循环
- */
- var sum int = 0
- for i := 0; i <= 100; i++ {
- sum += i
- fmt.Println(sum)
- if sum >= 300 {
- break
- }
- }
- fmt.Println("-----------ok")
- /*
- break 标签 结束对应标签的循环
- */
- lable1:
- for i := 0; i < 100; i++ {
- lable2:
- for j := 0; j < 100; i++ {
- if i+j > 100 {
- break lable2
- }
- if i > 50 {
- break lable1
- }
- }
- }
- /*
- continue 跳过本次循环,继续下次循环 ,也可以加标签
- */
- for i := 0; i < 100; i++ {
- if i%6 != 0 {
- continue
- }
- fmt.Println(i)
- }
- /*
- goto 跳转到指定行代码,配合标签使用,不建议使用
- */
- /*
- return 结束程序执行
- */
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |