» Go语言快速入门 » 1. 基础篇 » 1.6 控制流

控制流

在 Go 中,通过条件语句(if、else、switch)和循环结构(for)来进行流控制。

If/Else

if 语句用于条件性执行代码。

package main

import "fmt"

func main() {
    x := 10

    if x > 5 {
        fmt.Println("x is greater than 5")
    } else {
        fmt.Println("x is not greater than 5")
    }
}

Switch

switch 语句用于根据表达式的值从多个分支中选择执行。

package main

import "fmt"

func main() {
    day := "Monday"

    switch day {
    case "Monday":
        fmt.Println("It's Monday.")
    case "Tuesday":
        fmt.Println("It's Tuesday.")
    default:
        fmt.Println("It's some other day.")
    }
}

For

Go 中有一个既支持传统循环,又支持区间迭代的 for 循环。

package main

import "fmt"

func main() {
    // 传统 for 循环
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }

    // 基于区间范围的 for 循环
    numbers := []int{1, 2, 3, 4, 5}
    for index, value := range numbers {
        fmt.Printf("Index: %d, Value: %d\n", index, value)
    }
}

Range

range 用于迭代各种可迭代数据结构中的元素。

package main

import "fmt"

func main() {
    nums := []int{2, 3, 4}
    sum := 0
    for _, num := range nums {
        sum += num
    }
    fmt.Println("sum:", sum)

    kvs := map[string]string{"l": "lite", "r": "rank"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }
    for k := range kvs {
        fmt.Println("key:", k)
    }

    for i, c := range "lite" {
        fmt.Println(i, c)
    }
}

输出结果:

sum: 9
l -> lite
r -> rank
key: l
key: r
0 108
1 105
2 116
3 101

Defer 延迟

defer 语句用于确保在程序的执行过程中延迟执行函数调用,通常用于资源清理

package main

import "fmt"

func main() {
    defer fmt.Println("This will be executed last.")
    fmt.Println("This will be executed first.")

    // => This will be executed first.
    // => This will be executed last.
}

代码挑战

实现一个名为 findMax 的函数,该函数接受一个整数切片作为输入,并返回最大值及其索引。

Loading...
> 此处输出代码运行结果
上页
下页