Go语言中的流程控制

1 概述

Go语言提供了条件分支 if,状态分支 switch,循环 for,跳转 goto,延迟执行 defer,这些流程控制语句。分别作说明如下:

2 条件分支 if

依据条件是否满足确定执行哪个分支。

语法:

流程图:

Go是强类型,要求条件表达式严格返回布尔型数据!

3 状态分支 switch

3.1 基础

状态分支,依据特定的状态值进行分支判断。

语法:

流程如下:

3.2 fallthrough,向下穿越

在其他语法(非Go,C,PHP)中,switch 有一个特定的现象,就是向下穿越,指的是一旦一个分支 case 满足,则后续分支代码都会被执行。而Go语言中,默认分支执行完毕,switch 执行完毕。使用 fallthrough 语法,可以达到穿越下一个 case 分支的目的。

fallthrough 需要出现在分支语句块的最后一句!

语法:

流程如下:

3.3 条件型 switch

示例代码,逻辑与 if-else-if 一致:

个人感觉失去了 switch 分支的意义哈!

4 循环for

4.1 基本

语法格式:

流程如下:

4.2 省略语句

Go中允许省略三个语句中的任意,就是可以形成如下的语法:

仅存在条件语句,类似其他语言的 while 结构!

无限循环结构,死循环

其他结构,三个语句可以任意省略,不再列举:

4.3 break

终止整个循环执行。

流程图如下:

4.4 continue

终止本次循环体的继续执行,进行循环条件变化。

流程如下:

4.5 嵌套循环

语法:

在使用 break,continue 时,若需要终止外层循环 for,需要配合语句标签使用,演示如下:

额外注意,switch 在语言中,被视为执行一次的循环结构,因此 switch 中若要终止外层循环,需要使用标签语法,不能直接 break、continue,演示如下:

5 goto

配合标签完成无条件跳转。演示如下:

6 延迟执行defer

defer 语句会将其后语句进行延迟处理。在 defer 所属函数即将返回时,将延迟处理的语句按 defer 的逆序进行执行,也就是说,先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。演示如下:

defer 执行是放在一个临时的调用栈中,因此是先入栈后出栈的。

流程图如下:

实操时,处理互斥所时,很常用!

以上就是Go语言提供的流程控制相关内容

完!

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181023G00FBM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券