golang笔记-流程控制

if … else分支结构

func main() {
    le := 1
    if le > 10 {
        fmt.Println(le ,">10")
    }else if le ==0 {
        fmt.Println(le, "=10")
    }else {
        fmt.Println(le, "<10")
    }
}

for循环结构

Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构

func main() {
    var sum int
    for i := 1; i < 100; i++{
        sum += i
    }
    fmt.Println("sum = ", sum)
}

使用for循环可以实现while的功能

乘法口诀表:

func main() {
    for y := 1; y <= 9; y++ {
        for x:=1; x<=y; x++ {
            fmt.Printf("%d*%d=%d\t", x, y, x*y)

        }
        fmt.Println()
    }
}

for range键值循环

for key, value := range []int{1, 2, 3, 4} {
    fmt.Printf("key:%d  value:%d\n", key, value)
}

switch case语句

case 与 case 之间是独立的代码块,不需要通过 break 语句跳出当前 case 代码块以避免执行到下一行

var a = "hello"
switch a {
case "hello":
    fmt.Println(1)
case "world":
    fmt.Println(2)
default:
    fmt.Println(0)
}

fallthrough关键字类似其他语言的continue使用

goto语句

Go语言中 goto 语句通过标签进行代码间的无条件跳转,同时 goto 语句在快速跳出循环、避免重复退出上也有一定的帮助,使用 goto 语句能简化一些代码的实现过程。

类比:java中保留goto关键字,但是有标号,汇编中也有

func main() {
    for x := 0; x < 10; x++ {
        for y := 0; y < 10; y++ {
            if y == 2 {
                // 跳转到标签
                goto breakHere
            }
        }
    }
    // 手动返回, 避免执行进入标签
    return
    // 标签
    breakHere:
    fmt.Println("done")
}

break 跳出循环

Go语言中 break 语句可以结束 for、switch 和 select 的代码块,另外 break 语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的 for、switch 和 select 的代码块上。

func main() {
OuterLoop:
    for i := 0; i < 2; i++ {
        for j := 0; j < 5; j++ {
            switch j {
            case 2:
                fmt.Println(i, j)
                break OuterLoop
            case 3:
                fmt.Println(i, j)
                break OuterLoop
            }
        }
    }
}

continue 继续下一次循环

Go语言中 continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在 for 循环内使用,在 continue 语句后添加标签时,表示开始标签对应的循环。

func main() {
OuterLoop:
    for i := 0; i < 2; i++ {
        for j := 0; j < 5; j++ {
            switch j {
            case 2:
                fmt.Println(i, j)
                continue OuterLoop
            }
        }
    }
}