1. 条件语句

1.1 if 语句

if 语句用于根据条件执行代码块。

package main

import "fmt"

func main() {
    x := 10

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

1.2 if-else 语句

if-else 语句用于根据条件执行不同的代码块。

package main

import "fmt"

func main() {
    x := 10

    if x > 5 {
        fmt.Println("x is greater than 5")
    } else {
        fmt.Println("x is less than or equal to 5")
    }
}

1.3 if-else if-else 语句

if-else if-else 语句用于检查多个条件。

package main

import "fmt"

func main() {
    x := 10

    if x > 10 {
        fmt.Println("x is greater than 10")
    } else if x == 10 {
        fmt.Println("x is equal to 10")
    } else {
        fmt.Println("x is less than 10")
    }
}

1.4 在条件中声明变量

if语句的条件中,可以声明一个变量,该变量在整个if块中可见。

package main

import "fmt"

func main() {
    if x := 10; x > 5 {
        fmt.Println("x is greater than 5")
    } else {
        fmt.Println("x is less than or equal to 5")
    }
    // fmt.Println(x) // 这里会报错,因为x只在if语句块内有效
}

2. 循环语句

2.1 for 循环

for 是Go语言中唯一的循环结构,可以实现多种循环形式。

2.1.1 基本的for循环
package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
}
2.1.2 省略初始语句和后置语句的for循环
package main

import "fmt"

func main() {
    i := 0
    for i < 5 {
        fmt.Println(i)
        i++
    }
}
2.1.3 无限循环
package main

import "fmt"

func main() {
    for {
        fmt.Println("Infinite loop")
        break // 使用break退出循环
    }
}
2.1.4 使用range迭代

range 用于迭代数组、切片、映射、字符串或通道。

package main

import "fmt"

func main() {
    arr := []int{1, 2, 3, 4, 5}

    for index, value := range arr {
        fmt.Println(index, value)
    }
}

3. 分支语句

3.1 switch 语句

switch 语句用于执行多个分支之一。

3.1.1 基本的switch语句
package main

import "fmt"

func main() {
    x := 2

    switch x {
    case 1:
        fmt.Println("x is 1")
    case 2:
        fmt.Println("x is 2")
    case 3:
        fmt.Println("x is 3")
    default:
        fmt.Println("x is not 1, 2, or 3")
    }
}
3.1.2 单个case多个条件
package main

import "fmt"

func main() {
    x := "a"

    switch x {
    case "a", "e", "i", "o", "u":
        fmt.Println("x is a vowel")
    default:
        fmt.Println("x is a consonant")
    }
}
3.1.3 没有条件的switch

没有条件的switch相当于switch true,用于替代一系列的if-else if语句。

package main

import "fmt"

func main() {
    x := 10

    switch {
    case x < 0:
        fmt.Println("x is negative")
    case x == 0:
        fmt.Println("x is zero")
    case x > 0:
        fmt.Println("x is positive")
    }
}

4. 跳转语句

4.1 break 语句

break 语句用于退出循环或switch语句。

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            break // 退出循环
        }
        fmt.Println(i)
    }
}

4.2 continue 语句

continue 语句用于跳过当前循环的剩余部分,并开始下一次迭代。

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i%2 == 0 {
            continue // 跳过偶数
        }
        fmt.Println(i)
    }
}

4.3 goto 语句

goto 语句用于跳转到代码中的标签位置。

package main

import "fmt"

func main() {
    i := 0

loop:
    fmt.Println(i)
    i++
    if i < 5 {
        goto loop // 跳转到标签loop
    }
}

示例代码

以下是一个包含各种控制结构的完整示例代码:

package main

import "fmt"

func main() {
    // if-else语句
    x := 10
    if x > 5 {
        fmt.Println("x is greater than 5")
    } else {
        fmt.Println("x is less than or equal to 5")
    }

    // for循环
    for i := 0; i < 3; i++ {
        fmt.Println(i)
    }

    // switch语句
    y := "b"
    switch y {
    case "a":
        fmt.Println("y is a")
    case "b":
        fmt.Println("y is b")
    case "c":
        fmt.Println("y is c")
    default:
        fmt.Println("y is not a, b, or c")
    }

    // 跳转语句
    for i := 0; i < 5; i++ {
        if i == 3 {
            break // 退出循环
        }
        fmt.Println(i)
    }

    for i := 0; i < 5; i++ {
        if i%2 == 0 {
            continue // 跳过偶数
        }
        fmt.Println(i)
    }

    // goto语句
    i := 0
loop:
    fmt.Println(i)
    i++
    if i < 3 {
        goto loop // 跳转到标签loop
    }
}

通过以上教程和示例,你可以系统地了解和掌握Go语言中的各种控制结构。多加练习,能够更加熟练地运用这些控制结构编写逻辑复杂的程序。

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:http://example.com/subject/article/88/

许可协议:署名-非商业性使用 4.0 国际许可协议