最近学习 go 的过程中遇到了一个 content = append(content, buf[:n]...) 的用法,对...这个东西有点疑惑,然后查询了下资料才明白是怎么回事,在 Go 语言中,函数签名 func append(slice []Type, elems ...Type) []Type 中的三个点 ... 表示 变长参数(variadic parameter)。下面详细解释这个函数签名:
变长参数(Variadic Parameter)
1.语法结构
func append(slice []Type, elems ...Type) []Type
2.功能说明
- slice 是一个类型为 []Type 的切片,它是第一个参数。
- elems 是一个类型为 …Type 的变长参数列表。
- 函数返回一个新的切片 []Type。
变长参数详解
变长参数的定义
- 变长参数的定义
- 在函数参数列表中,最后一个参数可以使用 … 来定义一个变长参数。
- 这意味着调用者可以传入任意数量的 Type 类型的参数。
- 内部处理
- 在函数内部,变长参数 elems …Type 被当作一个类型为 []Type 的切片来处理。
- 可以通过索引或循环遍历来访问这些参数。
示例代码(普通用法)
package main
import "fmt"
// 定义一个简单的 append 函数
func append(slice []int, elems ...int) []int {
<