课程目标
- 掌握Golang中的控制结构,包括
if、for和switch; - 理解函数的定义与调用方法;
- 熟悉Golang中的多返回值与错误处理机制。
1. 控制结构
1.1 if语句
-
功能:用于条件判断,根据条件的真假执行不同的代码块;
-
语法:
if 条件 { // 条件为真时执行的代码 } else { // 条件为假时执行的代码 } -
示例:
package main import "fmt" func main() { age := 18 if age >= 18 { fmt.Println("You are an adult.") } else { fmt.Println("You are a minor.") } } -
if语句的变体:
-
在
if语句中定义变量:if age := 18; age >= 18 { fmt.Println("You are an adult.") }
-
1.2 for循环
-
功能:用于重复执行代码块;
-
语法:
for 初始化; 条件; 后续操作 { // 循环体 } -
示例:
package main import "fmt" func main() { for i := 0; i < 5; i++ { fmt.Println(i) } } -
for循环的变体:
-
省略初始化与后续操作(类似
while循环):i := 0 for i < 5 { fmt.Println(i) i++ } -
无限循环:
for { fmt.Println("This loop will run forever.") }
-
1.3 switch语句
-
功能:用于多条件分支判断;
-
语法:
switch 表达式 { case 值1: // 表达式等于值1时执行的代码 case 值2: // 表达式等于值2时执行的代码 default: // 表达式不等于任何case值时执行的代码 } -
示例:
package main import "fmt" func main() { day := "Monday" switch day { case "Monday": fmt.Println("Today is Monday.") case "Tuesday": fmt.Println("Today is Tuesday.") default: fmt.Println("Today is another day.") } } -
switch语句的变体:
-
省略表达式(类似
if-else链):switch { case age < 18: fmt.Println("You are a minor.") case age >= 18: fmt.Println("You are an adult.") }
-
2. 函数的定义与调用
2.1 函数的定义
-
功能:将一段代码封装为一个可重用的单元;
-
语法:
func 函数名(参数列表) 返回值类型 { // 函数体 } -
示例:
package main import "fmt" func greet(name string) { fmt.Println("Hello,", name) } func main() { greet("Alice") }
2.2 函数的调用
-
功能:执行函数体中的代码;
-
语法:
函数名(参数列表) -
示例:
greet("Bob") // 输出:Hello, Bob
2.3 函数的返回值
-
功能:函数可以返回一个或多个值;
-
语法:
func 函数名(参数列表) 返回值类型 { // 函数体 return 返回值 } -
示例:
package main import "fmt" func add(a, b int) int { return a + b } func main() { result := add(2, 3) fmt.Println("Result:", result) // 输出:Result: 5 }
3. 多返回值与错误处理
3.1 多返回值
-
功能:函数可以返回多个值;
-
语法:
func 函数名(参数列表) (返回值类型1, 返回值类型2) { // 函数体 return 返回值1, 返回值2 } -
示例:
package main import "fmt" func divide(a, b int) (int, error) { if b == 0 { return 0, fmt.Errorf("division by zero") } return a / b, nil } func main() { result, err := divide(10, 2) if err != nil { fmt.Println("Error:", err) } else { fmt.Println("Result:", result) // 输出:Result: 5 } }
3.2 错误处理
-
功能:通过返回错误值来处理异常情况;
-
常用方法:
- 使用
error类型表示错误; - 使用
fmt.Errorf创建错误; - 使用
if语句检查错误。
- 使用
-
示例:
package main import ( "errors" "fmt" ) func divide(a, b int) (int, error) { if b == 0 { return 0, errors.New("division by zero") } return a / b, nil } func main() { result, err := divide(10, 0) if err != nil { fmt.Println("Error:", err) // 输出:Error: division by zero } else { fmt.Println("Result:", result) } }
3.3 命名返回值
-
功能:为返回值命名,简化代码;
-
语法:
func 函数名(参数列表) (返回值1 类型1, 返回值2 类型2) { // 函数体 返回值1 = 值1 返回值2 = 值2 return } -
示例:
package main import "fmt" func sumAndDiff(a, b int) (sum, diff int) { sum = a + b diff = a - b return } func main() { s, d := sumAndDiff(10, 5) fmt.Println("Sum:", s) // 输出:Sum: 15 fmt.Println("Diff:", d) // 输出:Diff: 5 }
4. 总结
- 本课介绍了Golang中的控制结构(
if、for、switch)以及函数的定义与调用方法; - 通过多返回值与错误处理的示例,学员可以编写更健壮的函数;
- 下一课将深入学习Golang的数据结构,为后续的接口测试打下坚实基础。
课后练习
练习题:编写一个字符串工具函数
-
要求:
- 实现字符串反转功能;
- 使用
for循环实现反转逻辑; - 使用多返回值处理可能的错误(如空字符串)。