1.1条件语句if
- 基础语法
• 可省略条件表达式括号。
• 持初始化语句,可定义代码块局部变量。
• 代码块左 括号必须在条件表达式尾部。
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
}
1.2 条件语句switch
- 类似其他语言的switch,用于不同条件执行不同的case,但是每个case不需要break来终止,自带终止。
- 还可以做类型判断,switch判断一个值是什么类型的,走对应高的case类型。
1.3条件语句select
- select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。
- 特点
每个case都必须是一个通信
所有channel表达式都会被求值
所有被发送的表达式都会被求值
如果任意某个通信可以进行,它就执行;其他被忽略。
如果有多个case都可以运行,Select会随机公平地选出一个执行。其他不会执行。
否则:
如果有default子句,则执行该语句。
如果没有default字句,select将阻塞,直到某个通信可以运行;Go不会重新对channel或值进行求值。
1.4循环语句for
- 支持三种的遍历方式
for init; condition; post { }
for condition { }
for { }
1.5循环语句range
- for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。
- range 会复制对象。
1.6 循环控制Goto、Break、Continue
- 特点
1.三个语句都可以配合标签(label)使用
2.标签名区分大小写,定以后若不使用会造成编译错误
3.continue、break配合标签(label)可用于多层循环跳出
4.goto是调整执行位置,与continue、break配合标签(label)的结果并不相同