美文网首页
04.手撕Go语言-流程控制

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

作者: imsilence | 来源:发表于2019-06-24 22:24 被阅读0次

我们经常需要代码在满足一定条件时进行执行,或者需要重复执行代码多次,此时需要选择条件语句(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语言-流程控制

    我们经常需要代码在满足一定条件时进行执行,或者需要重复执行代码多次,此时需要选择条件语句(if-else if-e...

  • 09-Go语言流程控制-指趣学院

    Go语言流程控制基本概念 Go语言流程控制和C语言一样, 也有三大流程控制结构顺序结构(默认结构)选择结构(if ...

  • 理解 defer、panic 和 recover

    在 Go 语言中,有很多流程控制的语句,if、else 等等,这些流程控制的关键字在其他语言中也存在的但 Go 中...

  • Go基础笔记

    Go语言基础(一) 流程控制语句:for、if、else、switch、defer for Go只有一种循环结构:...

  • go语言流程和函数(五)

    流程控制 if语句 go语言的if语句不需要括号,go语言的if还可以在条件判断的地方声明变量,go语言中的got...

  • Go语言基础之流程控制

    流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。 Go语言中最常用的流...

  • Go语言 流程控制

    Go语言支持以下几种流程控制语句条件语句:关键字为 if,else 和else if选择语句:关键字为switch...

  • Go语言流程控制

    简单的使用Go语言打印一个九九乘法表吧,反正闲着也是闲着

  • Go编程基础(控制流程语句)

    现在来学习下go语言中控制流程语句,区别下其他语言不同的写法。 1.for循环 Go只有for一个循环语句关键字,...

  • Golang:流程控制

    流程控制是每种编程语言走向和执行次序的重要部分 golang中最常用的流程控制有if和for,而switch和go...

网友评论

      本文标题:04.手撕Go语言-流程控制

      本文链接:https://www.haomeiwen.com/subject/vgbaqctx.html