Go语言中的控制结构:条件语句和循环

2024-06-12 14:51:21 浏览数 (1)

在编程中,控制结构是指引导程序如何执行的一系列指令。Go语言提供了多种控制结构来处理条件判断和循环操作。本文将详细介绍Go语言中的条件语句和循环结构,通过实例和代码解释,帮助读者全面理解和应用这些基本构造。


Ⅰ. 条件语句

1. if 语句

if语句是最基本的条件语句,根据布尔表达式的结果(true或false)来执行相应的代码块。

a. 基本语法
代码语言:go复制
if condition {
    // 当 condition 为 true 时执行的代码
}
b. 示例
代码语言:go复制
package main

import "fmt"

func main() {
    a := 10
    if a > 5 {
        fmt.Println("a is greater than 5")
    }
}

在这个示例中,如果变量a的值大于5,程序将输出a is greater than 5

2. if-else 语句

if-else语句在条件为false时执行另一个代码块。

a. 基本语法
代码语言:go复制
if condition {
    // 当 condition 为 true 时执行的代码
} else {
    // 当 condition 为 false 时执行的代码
}
b. 示例
代码语言:go复制
package main

import "fmt"

func main() {
    a := 3
    if a > 5 {
        fmt.Println("a is greater than 5")
    } else {
        fmt.Println("a is less than or equal to 5")
    }
}

在这个示例中,如果a大于5,程序将输出a is greater than 5,否则输出a is less than or equal to 5

3. if-else if-else 语句

if-else if-else语句用于处理多个条件分支。

a. 基本语法
代码语言:go复制
if condition1 {
    // 当 condition1 为 true 时执行的代码
} else if condition2 {
    // 当 condition2 为 true 时执行的代码
} else {
    // 当上述所有条件都为 false 时执行的代码
}
b. 示例
代码语言:go复制
package main

import "fmt"

func main() {
    a := 7
    if a > 10 {
        fmt.Println("a is greater than 10")
    } else if a > 5 {
        fmt.Println("a is greater than 5 but less than or equal to 10")
    } else {
        fmt.Println("a is 5 or less")
    }
}

在这个示例中,程序将检查多个条件并输出相应的结果。

4. 带初始化的 if 语句

Go语言的if语句允许在条件判断前执行一个简单的语句,通常用于变量的声明和赋值。

a. 基本语法
代码语言:go复制
if initialization; condition {
    // 当 condition 为 true 时执行的代码
}
b. 示例
代码语言:go复制
package main

import "fmt"

func main() {
    if a := 10; a > 5 {
        fmt.Println("a is greater than 5")
    }
}

在这个示例中,变量a在if语句内部声明并初始化。


Ⅱ. switch 语句

switch语句是一种多分支选择结构,适用于替代多个if-else if语句。

1. 基本语法

代码语言:go复制
switch expression {
case value1:
    // 当 expression == value1 时执行的代码
case value2:
    // 当 expression == value2 时执行的代码
default:
    // 当 expression 不等于上述所有值时执行的代码
}

2. 示例

代码语言:go复制
package main

import "fmt"

func main() {
    day := 3
    switch day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    default:
        fmt.Println("Other day")
    }
}

在这个示例中,根据变量day的值,程序输出相应的星期几。

3. 不带表达式的 switch 语句

Go语言的switch语句还可以省略表达式,直接在case语句中进行条件判断。

a. 基本语法
代码语言:go复制
switch {
case condition1:
    // 当 condition1 为 true 时执行的代码
case condition2:
    // 当 condition2 为 true 时执行的代码
default:
    // 当上述所有条件都为 false 时执行的代码
}
b. 示例
代码语言:go复制
package main

import "fmt"

func main() {
    a := 10
    switch {
    case a > 10:
        fmt.Println("a is greater than 10")
    case a > 5:
        fmt.Println("a is greater than 5 but less than or equal to 10")
    default:
        fmt.Println("a is 5 or less")
    }
}

在这个示例中,程序将根据条件判断来执行相应的代码块。

4. switch 语句中的 fallthrough

在Go语言中,使用fallthrough关键字可以使程序执行下一个case语句的代码。

a. 示例
代码语言:go复制
package main

import "fmt"

func main() {
    day := 2
    switch day {
    case 1:
        fmt.Println("Monday")
        fallthrough
    case 2:
        fmt.Println("Tuesday")
        fallthrough
    case 3:
        fmt.Println("Wednesday")
    default:
        fmt.Println("Other day")
    }
}

在这个示例中,程序将从匹配的case开始执行,并继续执行后续的case代码块,直到遇到下一个break或结束。


Ⅲ. 循环结构

1. for 语句

Go语言中唯一的循环结构是for语句,适用于各种循环场景。

2. 基本语法

a. 基本 for 循环
代码语言:go复制
for initialization; condition; post {
    // 循环体
}
b. 示例
代码语言:go复制
package main

import "fmt"

func main() {
    for i := 0; i < 5; i   {
        fmt.Println(i)
    }
}

在这个示例中,程序将输出0到4的数字。

3. 省略初始化和后置语句

for循环的初始化语句和后置语句是可选的。

a. 示例
代码语言:go复制
package main

import "fmt"

func main() {
    i := 0
    for i < 5 {
        fmt.Println(i)
        i  
    }
}

在这个示例中,只有条件语句,没有初始化和后置语句。

4. 无限循环

省略所有三个部分会创建一个无限循环。

a. 示例
代码语言:go复制
package main

import "fmt"

func main() {
    i := 0
    for {
        if i >= 5 {
            break
        }
        fmt.Println(i)
        i  
    }
}

在这个示例中,循环通过条件判断和break语句来终止。

5. for-range 循环

for-range循环用于遍历数组、切片、映射和字符串。

a. 示例
代码语言:go复制
package main

import "fmt"

func main() {
    numbers := []int{1, 2, 3, 4, 5}
    for index, value := range numbers {
        fmt.Printf("Index: %d, Value: %dn", index, value)
    }
}

在这个示例中,程序将遍历切片numbers并输出每个元素的索引和值。

6. 循环控制语句

Go语言提供了breakcontinuegoto语句来控制循环的执行流程。

a. break 语句

用于终止最内层的循环。

代码语言:go复制
package main

import "fmt"

func main() {
    for i := 0; i < 5; i   {
        if i == 3 {
            break
        }
        fmt.Println(i)
    }
}

在这个示例中,当i等于3时,循环终止。

b. continue 语句

用于跳过当前循环的剩余代码,并开始下一次循环。

代码语言:go复制
package main

import "fmt"

func main() {
    for i := 0; i < 5; i   {
        if i == 3 {
            continue
        }
        fmt.Println(i)
    }
}

在这个示例中,当i等于3时,跳过该次循环,继续下一次循环。

c. goto 语句

用于跳转到程序中的某个标签位置。

代码语言:go复制
package main

import "fmt"

func main() {
    i := 0
loop:
    fmt.Println(i)
    i  
    if i < 5 {
        goto loop
    }
}

在这个示例中,goto语句跳转到标签loop位置,实现了类似于循环的效果。


Ⅳ. 项目介绍与发展

为了展示Go语言中的控制结构在实际项目中的应用,我们将构建一个简单的控制结构项目,涵盖条件语句和循环的各种用法。

1. 项目结构

代码语言:go复制
control-structures/
├── main.go
├── conditions.go
└── loops.go

2. main.go

代码语言:go复制
package main

import "control-structures/utils"

func main() {
    utils.DemoConditions()
    utils.DemoLoops()
}

3. conditions.go

代码语言:go复制
package utils

import "fmt"

func DemoConditions() {
    // if 语句示例
    a := 10
    if a > 5 {
        fmt.Println("a is greater than 5")
    }

    // if-else 语句示例
    b := 3
    if b > 5 {
        fmt.Println("b is greater than 5")
    } else {
        fmt.Println("b is less than or equal to 5")
    }

    // if-else if-else 语句示例
    c := 7
    if c > 10 {
        fmt.Println("c is greater than 10")
    } else if c > 5 {
        fmt.Println("c is greater than 5 but less than or equal to 10")
    } else {
        fmt.Println("c is 5 or less")
    }

    // 带初始化的 if 语句示例
    if d := 10; d > 5 {
        fmt.Println("d is greater than 5")
    }

    // switch 语句示例
    day := 3
    switch day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    default:
        fmt.Println("Other day")
    }

    // 不带表达式的 switch 语句示例
    e := 10
    switch {
    case e > 10:
        fmt.Println("e is greater than 10")
    case e > 5:
        fmt.Println("e is greater than 5 but less than or equal to 10")
    default:
        fmt.Println("e is 5 or less")
    }

    // switch 语句中的 fallthrough 示例
    day = 2
    switch day {
    case 1:
        fmt.Println("Monday")
        fallthrough
    case 2:
        fmt.Println("Tuesday")
        fallthrough
    case 3:
        fmt.Println("Wednesday")
    default:
        fmt.Println("Other day")
    }
}

4. loops.go

代码语言:go复制
package utils

import "fmt"

func DemoLoops() {
    // 基本 for 循环示例
    for i := 0; i < 5; i   {
        fmt.Println(i)
    }

    // 省略初始化和后置语句的 for 循环示例
    j := 0
    for j < 5 {
        fmt.Println(j)
        j  
    }

    // 无限循环示例
    k := 0
    for {
        if k >= 5 {
            break
        }
        fmt.Println(k)
        k  
    }

    // for-range 循环示例
    numbers := []int{1, 2, 3, 4, 5}
    for index, value := range numbers {
        fmt.Printf("Index: %d, Value: %dn", index, value)
    }

    // break 语句示例
    for l := 0; l < 5; l   {
        if l == 3 {
            break
        }
        fmt.Println(l)
    }

    // continue 语句示例
    for m := 0; m < 5; m   {
        if m == 3 {
            continue
        }
        fmt.Println(m)
    }

    // goto 语句示例
    n := 0
loop:
    fmt.Println(n)
    n  
    if n < 5 {
        goto loop
    }
}

Go语言中的条件语句和循环结构,包括if语句、switch语句以及for循环的各种用法。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

0 人点赞