Go语言基础十二——流程控制

88 阅读2分钟

我正在参加「掘金·启航计划」

1、if else(分支结构)

1.1、if条件判断基本写法

if匹配的左括号{必须与if和表达式放在同一行,不然会编译错误。

if 表达式 {
	分支1
} else if 表达式2 {
	分支2
} else {
	分支3
}

1.2、if条件判断特殊写法

可以在if表达式之前添加一个执行语句,在根据变量值进行判断,这个变量作用于只在该if块中有效。

if score:=65; score> 80 {
		分支1
} else if score >60 {
	  分支2
} else {
	  分支3
}

2、for循环结构

2.1、基本格式

for 初始语句; 条件表达式; 结束语句 {
		循环体语句
}

for循环的初始语句可以被忽略,但是初始语句的分好必须要写;

i := 0
for ; i<10; i++ {
}

for循环语句的初始语句和结束语句都可以省略;

i := 0
for i<10 {
		i++
}

2.2、无线循环

for {
	循环体语句
}

for循环可以通过 breakgotoreturnpanic 强制退出循环。

3、for range(键值循环)

Go语言中可以使用for range遍历数组、切片、字符串、map及通道(channel)。

for key, value := range map {

}

4、switch case

使用switch 可以方便的对大量的值进行条件判断

finger := 3

switch finger {
case 1:
case 2:
case 3, 4, 5: //一个分支可以有多个值
default :
    //没有找到 
}

每个switch只能有一个default分支。

一个分支可以有多个值,多个case值中间用英文逗号分隔。

分支还可以使用表达式,这时候switch语句后面不需要在跟判断变量。

age := 30
switch {
    case age <18:
    case age <60:
    default: 
}

fallthrough语句可以执行满足条件的case的下一个case。

s := 10

switch {
case s == 10 :
	fmt.Println(s)
	fallthrough
case s > 5 :
	fmt.Println("大于5")
default : 
}

5、goto(跳转到指定标签)

goto语句通过标签进行代码间的无条件跳转,goto可以再快速跳出循环、避免重复退出上又一定帮助,可以简化双层嵌套的for循环。

func gotoDemo(){
    for i := 0; i < 10; i++ {
        for j := 0; j<10; j++ {
            if j == 2 {
            	goto breakTag //设置退出标签
            }
        }
    }
breakTag:
    fmt.Println("结束for循环")
}

6、break(跳出循环)

break语句可以结束forswitchselect的代码块。

break语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签需求必须定义在对应的forswitchselect的代码块上。

func breakDemo(){
    BREAKDEMO:
    for i := 0; i < 10; i++ {
        for j :=0; j < 10; j++ {
        	break BREAKDEMO
        }
    }
}

7、continue(继续下次循环)

continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在for循环内使用。

continue语句添加标签时,表示开始标签对应的循环。

func continueDemo{
    forloop1:
    for i := 0; i<10; i++ {
        for j :=0; j <10; j++ {
            if i ==2 && j == 2 {
            	continue forloop1
            }
        }
    }
}