Golang学习笔记(三):控制流

这篇文章主要介绍了Golang学习笔记(三):控制流,本文讲解了IF、FOR、SWITCH、goto、break、continue等控制流语句的使用实例,需要的朋友可以参考下

控制结构分为: 条件+选择+循环

IF

1.说明

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

2.语法

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

3.示例

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

4.结果

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

注意,在有返回值的函数中,不允许将“最终的”return语句放到if ... else ... 结构中,否则编译失败

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

FOR

for是go的"while", 只支持for关键字.有三种形式

1.语法

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

2.说明

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

3.示例

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行


得到:
条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

4.配合range

for循环和保留字range一起使用,完成迭代器iterator操作

string, array, slice, map, channel都可以用range进行迭代器操作

range返回序号和值,若是不想要,可以用_

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行


得到
条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

SWITCH

python里面没有

1.语法

支持初始化表达式

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

几种形式:

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行


2.替代if...else if…else…

不指定switch 条件表达式(没有条件表达式,在case语句中有),或者直接为true

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

goto break continue

均可配合标签使用(标签区分大小写,若声明了没有使用会导致编译错误)

break/continue可配合标签用于多重循环跳出
goto是调整执行位置,与其他两个执行结果并不相同

1.goto

支持函数内部goto跳转

请善用

必须跳转到当前函数内定义的标签,标签名大小写敏感

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行


2.continue

进入下一次循环

3.break

终止循环

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行


示例
条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行

结果:

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行