95 lines
1.5 KiB
Markdown
95 lines
1.5 KiB
Markdown
|
|
# 01-basic-functions - 基础函数
|
|||
|
|
|
|||
|
|
## 知识点讲解
|
|||
|
|
|
|||
|
|
### 函数基本语法
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
func 函数名(参数列表) 返回值类型 {
|
|||
|
|
// 函数体
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 无参数无返回值
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
func greet() {
|
|||
|
|
fmt.Println("Hello, World!")
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 有参数无返回值
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
func greet(name string) {
|
|||
|
|
fmt.Printf("Hello, %s!\n", name)
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 单返回值
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
func add(a, b int) int {
|
|||
|
|
return a + b
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 多参数
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
func multiply(a, b, c int) int {
|
|||
|
|
return a * b * c
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 可变参数
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
func sum(nums ...int) int {
|
|||
|
|
total := 0
|
|||
|
|
for _, num := range nums {
|
|||
|
|
total += num
|
|||
|
|
}
|
|||
|
|
return total
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**调用**:
|
|||
|
|
```go
|
|||
|
|
sum(1, 2, 3) // 直接传参
|
|||
|
|
nums := []int{1, 2, 3}
|
|||
|
|
sum(nums...) // 解包切片
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 命名返回值
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
func divide(a, b int) (result int, err error) {
|
|||
|
|
if b == 0 {
|
|||
|
|
err = fmt.Errorf("division by zero")
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
result = a / b
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 重要提示
|
|||
|
|
|
|||
|
|
- Go函数可以有多个返回值,这是Go的特色
|
|||
|
|
- 函数的参数和返回值都是按值传递(值传递)
|
|||
|
|
- 可变参数必须是函数的最后一个参数
|
|||
|
|
- 命名返回值可以让代码更清晰
|
|||
|
|
|
|||
|
|
## 学习目标
|
|||
|
|
|
|||
|
|
完成本练习后,你将:
|
|||
|
|
- ✅ 掌握函数的基本定义方式
|
|||
|
|
- ✅ 理解参数传递机制
|
|||
|
|
- ✅ 学会使用可变参数
|
|||
|
|
- ✅ 了解命名返回值的用法
|
|||
|
|
|
|||
|
|
## 练习说明
|
|||
|
|
|
|||
|
|
打开 `main.go`,根据注释提示填充代码,完成后运行 `go test -v` 验证答案。
|