GO-控制结构

控制结构用于控制程序的执行流。主要的控制结构包括 if 语句、for 循环、switch 语句和 goto
语句。本文将详细介绍这些控制结构的用法和特点。

1 if 语句

if 语句用于条件判断,根据条件的真假决定是否执行某段代码。

1.1 基本用法

1
2
3
if condition {
// 条件为真时执行的代码
}

1.2 if-else 语句

1
2
3
4
5
if condition {
// 条件为真时执行
} else {
// 条件为假时执行
}

1.3 if-else if-else 语句

支持多个条件判断

1
2
3
4
5
6
7
if condition1 {
// 条件1为真时执行
} else if condition2 {
// 条件2为真时执行
} else {
// 所有条件都为假时执行
}

1.4 简短声明

在 if 的条件部分可以使用简短声明。

1
2
3
4
5
if num := 10; num%2 == 0 {
fmt.Println("偶数")
} else {
fmt.Println("奇数")
}

2 for 循环

for 是 Go 语言唯一的循环结构。它可以用来实现不同类型的循环,包括传统的计数循环和条件循环。

2.1 基本用法

1
2
3
for i := 0; i < 5; i++ {
fmt.Println(i)
}

2.2 条件循环

没有初始化和更新语句的 for 循环可以用于条件判断。

1
2
3
4
5
i := 0
for i < 5 {
fmt.Println(i)
i++
}

2.3 无限循环

1
2
3
for {
// 无限循环,通常与条件语句结合使用
}

2.4 range 循环

range 可以用于遍历数组、切片、映射和字符串。

1
2
3
4
fruits := []string{“apple”, “banana”, “cherry”}
for index, value := range fruits {
fmt.Printf(”%d: %s\n”, index, value)
}

3 switch 语句

switch 语句用于多条件选择,它是对 if 语句的补充,通常使代码更加简洁易读。

3.1 基本用法

1
2
3
4
5
6
7
8
switch expression {
case value1:
// 当 expression 等于 value1 时执行
case value2:
// 当 expression 等于 value2 时执行
default:
// 当没有匹配时执行
}

3.2 不带表达式的 switch

不带表达式的 switch 默认使用 true,每个 case 可以是一个布尔表达式。

1
2
3
4
5
6
7
8
switch {
case num < 0:
fmt.Println(“负数”)
case num == 0:
fmt.Println(“零”)
default:
fmt.Println(“正数”)
}

3.3 匹配多个值

1
2
3
4
5
6
switch day {
case “Monday”, “Tuesday”:
fmt.Println(“工作日”)
case “Saturday”, “Sunday”:
fmt.Println(“周末”)
}

4 goto 语句

goto 语句用于无条件地跳转到指定标签,虽然在某些情况下可以简化代码,但应谨慎使用。

4.1 基本用法

1
2
3
4
goto label

label:
// 跳转到这里

4.2 示例

1
2
3
4
5
6
7
8
i := 0

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