【Go流程控制结构】
作者:互联网
流程控制语句用于控制程序的执行顺序,这样程序就具备了逻辑结构。一般流程控制语句需要和各种条件结合使用,比如条件判断if,用于选择的switch,用于循环的for。
if条件语句
if语句是条件语句,它根据布尔值的表达式来决定选择那个分支执行:如果表达式的值为true,则if分支被执行;如果表达式的值为false,则else分支被执行。
关于if条件语句的使用有一些规则:
-
if后面的条件表达式不需要使用(), 和有些编程语言不一样,这更体现Go语言的简洁;
-
每个条件分支(if 或者 else)中的大括号是必须的,哪怕大括号里面只有一行代码;
-
if 紧跟的大括号(不能独占一行,else前的大括号)也不行独占一行,否则编译不通过;
-
在if……else 条件语句中可以增加多个 else if 增加更多的条件分支。但是这种方式不被推荐,因为代码可读性差,多个条件分支可以用switch代替,使代码更简洁。
func main() {
if i := 6; i > 10 {
fmt.Println("I > 10")
} else if i > 5 && i <= 10 {
fmt.Println("5<i<=10")
} else {
fmt.Println("i <= 5")
}
}
和其他编程语言不同,在Go语言的if语句中,可以有一个简单的表达式语句,并将该语句和条件语句使用分号; 分开。通过if 简单语句声明的变量,只能在整个if …… else if …… else 条件语句汇总使用。 如上面示例所示。
switch选择语句
if条件语句比较适合分支较少的情况,如果有很多分支的话,选择switch会更方便,Go语言的switch语句非常强大且灵活。switch语句同样也可以用一个简单的语句来做初始化,同样用分号;分割。每一个case就是一个分支,分支条件为true该分支才会执行,而且case分之后的条件表达式也不能用小括号()包裹。
在Go语言中,switch的case从上到下逐一进行判断,一旦满足条件,立即执行对应的分支并返回,其余分支不再做判断。即Go语言的switch在默认情况下,case最后自带break。这和其他编程语言不一样。Go语言这种设计就是为了防止写break,下一个case被执行。如果真有需要,需要执行下一个紧跟的case怎么办? Go语言提供fallthrough关键字,它只能作为这种子句中最后一个非空语句使用。
-
fallthrough 不能用在switch最后一个分支上
-
fallthrough到下一个case时,不执行case匹配检查
switch {
case false:
fmt.Println("The integer was <= 4")
fallthrough
case true:
fmt.Println("The integer was <= 5")
fallthrough
case false:
fmt.Println("The integer was <= 6")
fallthrough
case true:
fmt.Println("The integer was <= 7")
fallthrough
case false:
fmt.Println("The integer was <= 8")
default:
fmt.Println("default case")
}
输出结果:
The integer was <= 5
The integer was <= 6
The integer was <= 7
The integer was <= 8
在这个例子中,不仅有初始化的简单语句,还有表达式。当switch 后面有表达式时,case后的值就要和这个表达式的结果类型相同,比如这里的i是int类型,那么case后就只能是int类型。如果是其他类型,会提示类型不匹配,无法编译通过。
switch后的表达式没有太多限制,是一个合法的表达式即可,也不一定要求是常量或者整数。可以直接把比较表达式放在switch后面:
switch 2 > 1 {
case true :
fmt.Println("true")
case false :
fmt.Println("false")
}
for循环语句
经典的for循环,由三部分组成,其中需要两个; 分割。
sum := 0
for i := 1; i <= 100; i++ {
sum += i
}
fmt.Println("the sum is ", sum)
-
第一部分是一个简单语句,一般用于for循环的初始化,比如声明并初始化了变量i。
-
第二部分是for循环的条件,即表示for循环什么时候结束。
-
第三部分是更新语句,一般用于更新循环变量。
需要特别注意的是,Go语言的for循环非常强大,以上三部分都不是必须的,可以省略。像其他编程语言来说,都有while循环语句,Go语言中没有while循环,但是可以通过for循环达到while的效果。在Go语言中,同样支持使用continue、break控制for循环:
-
continue 可以跳出本次循环,继续执行下一次循环。
-
Break 可以跳出整个for循环,即使for循环没有执行完,也会强制终止。
i, sum := 1, 0
for {
sum += i
i++
if i>100{
break
}
}
fmt.Prinltn("the sum is", sum)
上述示例中使用的是没有任何条件的for循环,也称为for无限循环。使用break退出无限循环。
标签:语句,case,流程,控制结构,switch,循环,Go,表达式 来源: https://blog.csdn.net/zhw21w/article/details/121780315