Go语言可变参数
如果一个函数的参数,类型一致,但个数不定,可以使用函数的可变参数。语法格式如下所示。
当要传递若干个值到可变参数函数中时,可以手动书写每个参数,也可以将一个 slice 传递给该函数,通过
【示例】使用可变参数函数计算学员考试总成绩及平均成绩。
func 函数名(参数名 ...类型)[(返回值列表)]{
// 函数体
}
...
,在一个变量后面加上三个点,表示从该处开始接受可变参数。当要传递若干个值到可变参数函数中时,可以手动书写每个参数,也可以将一个 slice 传递给该函数,通过
...
可以将 slice 中的参数对应地传递给函数。【示例】使用可变参数函数计算学员考试总成绩及平均成绩。
package main import "fmt" func main() { sum, avg, count := GetScore(90, 82.5, 73, 64.8) fmt.Printf("学员共有 %d 门成绩,总成绩为:%.2f,平均成绩为:%.2f", count, sum, avg) fmt.Println() scores := []float64{92, 72.5, 93, 74.5, 89, 87, 74} sum, avg, count = GetScore(scores...) fmt.Printf("学员共有 %d 门成绩,总成绩为:%.2f,平均成绩为:%.2f", count, sum, avg) } func GetScore(scores ...float64) (sum, avg float64, count int) { for _, value := range scores { sum += value count++ } avg = sum / float64(count) return }运行结果如下:
学员共有 4 门成绩,总成绩为:310.30,平均成绩为:77.58
学员共有 7 门成绩,总成绩为:582.00,平均成绩为:83.14
- 一个函数最多只能有一个可变参数;
- 若参数列表中还有其他类型参数,则可变参数写在所有参数的最后。