今天学习了go语言的条件判断(if-else), 循环(for go 里面没有while 循环), 分支(switch-case), 代码块(label)
条件判断 if-else
go 里面的条件判断和其他语言的区别是go的条件判断里面条件表达式是没有括号的, if 条件的左边花括号 必须和 if 在同一行,不可换到下一行
因此如果写成下面这种是错误的
package main
import (
"fmt"
)
func main(){
x := 10
// 这种方式是错误的 x > 10 这个条件表达式 不能用括号
if (x > 10) {
fmt.Println(x)
}
// 这种方式也是错误的,左边的花括号必须和 if 语句在同一行
if x > 10
{
fmt.Println(x)
}
}
循环(for) go 里面没有while 循环
如果是写其他语言的while true 死循环 使用如下方式
for {
// 这种方式就是死循环
}
常规定义的方式和其他语言差不多都是使用i=0; i<n; i++
这种方式, 不同的是 go 的for 循环表达式也没有括号 如下
for i := 0; i<=10; i ++ {
// go for 循环
}
其他方式
i := 0
for i < 100 {
i += 1
}
分支(switch-case-default)
go switch 语句和其他语言的switch 语句差不多 定义的方式如下
switch i {
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
default:
fmt.Println("default")
}
switch-case 里面 还有个 fallthrough
关键字这是我之前接触是其他编程语言里面没有遇到过的,他的用法是,当某个case 满足条件之后 进入了该case 但是还想再尝试是否满足其他case 就可以使用 fallthrough
用法如下:
i := 10
switch {
case i > 1:
fmt.Println("1")
fallthrough
case i > 2:
fmt.Println("2")
fallthrough
default:
fmt.Println("default")
}
label(标签/代码块)
label 的使用场景一般是当你有多个for 循环嵌套的时候,如果你想跳出所有的循环,就可以使用label
如下
func lebels() {
LEBEL:
for {
for i := 0; i <= 10; i++ {
if i > 5 {
// 外层循环是死循环,使用 lebel 时 可以跳转到lebel层,从而跳出死循环, 直接跳到下面的OK
break LEBEL
}
}
}
fmt.Println("OK")
}