流程控制语句
- 让代码的执行的控制有一个流程化
- 控制语句的分类
- 顺序结构
- 分支结构
- 循环结构
- 什么样的逻辑结构都是由上述三种的组合来的
分支结构 a -> b/c/...
- if分支:
()可省略{}一定要加- 单分支
- 多分支
- 双分支
- switch分支
if分支
package main
import (
"fmt"
)
func main() {
// 单分支
var count int = 20
if count < 30 {
fmt.Println("if单分支")
}
if sum := 10; sum < 30 {// sum是单独的作用域
fmt.Println("可声明变量的if单分支")
}
// 双分支
if sum := 10; sum > 5 {
fmt.Println("条件成立的if双分支")
} else {
fmt.Println("条件不成立的if双分支")
}
// 多分支
score := 65
if score >= 90 {
fmt.Println("A")
} else if score > 80 {
fmt.Println("B")
} else {
fmt.Println("C")
}
}
switch分支
- case后的各个值数据类型,必须和switch的表达式数据类型一致
case 值1,值2,...- 不需要break
- default语句不是必须的,位置也是随意的
- switch穿透,利用
fallthrough语法可以执行满足条件的case的下一个case,是为了兼容C语言中的case设计的
package main
import (
"fmt"
)
func main() {
var score int = 50
// 判断分数判断等级
switch score/10 {
case 10:
fmt.Println("当前等级为A")
case 9:
fmt.Println("当前等级为B")
case 8:
fmt.Println("当前等级为C")
fallthrough// 走到下一个case中去
case 7, 6:
fmt.Println("当前等级为D")
default:
fmt.Println("当前等级为E")
}
}
for循环
- 格式如下
for 初始语句;条件表达式;结束语句{
循环体语句
}
package main
import (
"fmt"
)
func main() {
// 基础用法
var sum int = 0
for i := 1; i <= 5; i++ {
sum += i
}
fmt.Println(sum)// 15
// 省略初始和结束语句
var i = 0
for i < 5 {
fmt.Println(i);
i++
}
// 无限循环
for {
fmt.Println("123")
}
// break 跳出for循环
for i := 0; i < 5; i++ {
fmt.Println(i)
if i == 3 {
break
}
}
// continue 跳出本次循环,继续下一次循环
for i := 0; i < 5; i++ {
fmt.Println(i)
if i == 3 {
continue
}
}
}
for-range循环
for range遍历数组、切片、字符串、map 及通道(channel)- 规则如下
- 数组、切片、字符串返回索引和值
- map返回键和值
- 通道(channel)只返回通道内的值
后面补充 todo