流程控制语句
- 介绍GS中的if-else switch ?: for while等流程控制语句的语法
- 顺带介绍一下GS中一个defer语句的用法。
一般流程控制语句大体分成两部分:一是判断语句,二是循环语句。我们的GS中有一个defer语句, 因为其功能跟流程控制语句有点相似,所以在这篇文档结尾还会介绍一下defer语句的基本使用方法。
判断语句
判断语句主要包含 if-else,?: 和 switch 三种类型
if-else型
if-else型判断语句又分成三种不同的使用方式
if
if语句基本语法:
if(boolean_expression) // 如果boolean_expression = true, 就执行函数体
{
// execute body
}
if-else
if-else语句基本语法:
if(boolean_expression) // 如果boolean_expression = true, 就执行body1,跳过else,否则执行body2
{
// execute body1
}
else
{
// execute body2
}
if...else if...else
if...else if...else语句基本语法:
if(boolean_expression_1) // 从上往下,如果boolean_expression_x = true, 就执行body_x,跳过下面的else if和else。
{
// execute body1
}
...
else if(boolean_expression_m)
{
// execute body_m
}
...
else
{
// execute bodyn
}
嵌套使用if-else
if-else型支持多层嵌套使用, 嵌套型if-else语句基本语法:
if(boolean_expression1)
{
if(boolean_expression2)
{
...
}
...
else
{
...
}
}
else if
{
if(boolean_expression3)
{
...
}
}
else
{
...
}
?:型
三目型判断语句与if-else型语句很相似,两者可以相互转换,但三目型判断语句相对更简洁(只要一行)。
:?语句基本语法:
boolean_expression ? expression1 : expression2 // 如果boolean_expression = true,则执行expression1,否则执行expression2
举个例子:
int a = 0, b = 1; // a = (a和b中的最大值)
if(a > b)
a = a;
else
a = b;
等价于:
int a = 0, b = 1;
a = a > b ? a : b;
但是后者更加简洁明了。
??型
二目型判断语句??特别的是,判断条件不再是判断条件是否为true,而是判断条件是否不为 nil 或 void
??语句基本语法:
expression1 ?? expression2 // expression1 为 nil 或 void 则取 expression2,若 expression1 不为 nil 或 void 则取 expression 1
举个例子:
write(0??1) // expr1=0 不为 void 或 nil,输出 0
write(1??0) // 输出 1
write(nil??1) // expr1=nil 为 nil,输出 1
write(nil??0) // 输出 0