04.手撕Go语言-流程控制

我们经常需要代码在满足一定条件时进行执行,或者需要重复执行代码多次,此时需要选择条件语句(if-else if-else)或选择语句(switch case)及循环语句(for)

条件语句

段子:老婆给当程序员的老公打电话:下班顺路买十个包子,如果看到卖西瓜的,买一个。当晚老公手捧一个包子进了家门…老婆怒道:你怎么只买一个包子?!老公甚恐,喃喃道:因为我真看到卖西瓜的了。

  • 老婆:买十个包子,如果有卖西瓜的,买一个西瓜
  • 老公:如果有卖西瓜的,买一个包子,否则买十个包子

if

04.01.png

当if表达式的结果为true 则执行语句块内代码

if-else

04.02.png

当if表达式结果为true,则执行if语句块内代码,否则执行else语句块内代码

else if

成绩评优: [90, 100]=>优秀(A), [80, 90) => 良好(B), [60, 80) => 及格(C), [0, 60) => 不及格(D)

使用if-else语句实现

04.03.png

使用if-else if-else语句实现

04.04.png

当if表达式结果为true,则执行if语句块内代码,否则依次从上到下判断else if表达式结果,若结果为true则执行对应语句块内代码并退出if-else if-else语句,若if和else if表达式均为false,则执行else语句块内代码

初始化子语句

可以在if语句中初始化语句块内的局部变量,多个语句之间使用逗号(;)分隔

04.05.png

总结

对于条件语句必须有if语句,可以有0个或多个else if语句,最多有1个else语句,语句从上到下执行,执行第一个条件表达式为true的语句块并退出,否则执行else语句块退出

选择语句

根据输入条件的不同选择不同的语句块进行执行(多分支)

switch-case单值

04.06.png
04.07.png

swtich语句后面跟接变量,此时选择与变量相同的case语句块执行并退出,若所有case均不相同则执行default语句块,case语句中可包含多个不同的值进行匹配

switch-case表达式

04.08.png

switch后不跟接变量,此时自上到下选择第一个表达式为true的case语句块执行并退出,若所有case表达式均为false,则执行default语句块

初始化子语句

可以在switch语句中初始化语句块内的局部变量,多个语句之间使用逗号(;)分隔,注意初始化表达式时后面的逗号(;)不能省略

04.09.png

fallthrough

switch-case默认执行case语句后退出,若需要继续执行下一个case语句块,可以在case语句块中使用fullthrough进行声明

04.10.png

总结

对于选择语句可以有0个或多个case语句,最多有1个default语句,选择条件为true的case语句块开始执行并退出,若所有条件为false,则执行default语句块并退出。可以通过fallthrough修改执行退出行为,继续执行下一条的case或default语句块

循环语句

问题:计算1-100所有整数的和

for

04.11.png

for语句后有三个子语句分别为:初始化子语句,条件子语句和后置子语句

执行顺序为:

  1. 初始化子语句
  2. 条件子语句
  3. 语句块
  4. 后置子语句
  5. b->c->d
  6. ...
  7. 直到条件子语句为false结束循环

break与continue语句

04.12.png
  • break用于跳出循环,当条件满足则结束循环
  • continue用于跳过循环,当条件满足这跳过本次循环进行后置或条件子语句执行

类while

for子语句可以只保留条件子语句,此时类似于其他语言中的while循环

04.13.png

无限循环

for子语句全部省略,则为无限循环(死循环),s常与break结合使用

04.14.png

可使用ctrl+z中止程序运行

04.15.png

for-range

用于遍历可迭代对象中的每个元素,例如字符串,数组,切片,映射,通道等

04.16.png

针对包含Unicode字符的字符串遍历是需要使用for-range,range返回两个元素分别为字节索引和rune字符,可通过空白标识符忽略需要接收的变量

label与goto

可以通过goto语句任意跳转到当前函数指定的label位置

04.17.png

break和continue后也可以指定label用于指定跳出或跳过指定label同层级的循环

04.18.png

练习

乘法口诀

04.19.png

猜数游戏

04.20.png

你可能感兴趣的:(04.手撕Go语言-流程控制)