Go 语言中的可变参数函数

GolangGolangBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在 Go 语言中,一种可以接受可变数量参数的函数被称为可变参数函数。本实验将测试你对如何在 Go 语言中使用可变参数函数的理解。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go/FunctionsandControlFlowGroup -.-> go/functions("Functions") subgraph Lab Skills go/functions -.-> lab-15528{{"Go 语言中的可变参数函数"}} end

可变参数函数

在本实验中,你需要实现一个名为 max 的函数,该函数接受任意数量的整数作为参数,并返回最大值。

  • 函数 max 应接受任意数量的整数作为参数。
  • 函数 max 应返回作为参数传递的整数中的最大值。
$ go run variadic-functions.go
[1 2] 3
[1 2 3] 6
[1 2 3 4] 10

## Go 语言中函数的另一个关键特性是它们能够形成闭包,我们将在下文中探讨。

以下是完整代码:

// [_可变参数函数_](https://en.wikipedia.org/wiki/Variadic_function)
// 可以使用任意数量的尾随参数进行调用。
// 例如,`fmt.Println` 是一个常见的可变参数函数。

package main

import "fmt"

// 这是一个将接受任意数量的 `int` 作为参数的函数。
func sum(nums...int) {
	fmt.Print(nums, " ")
	total := 0
	// 在函数内部,`nums` 的类型等同于 `[]int`。我们可以调用 `len(nums)`,
	// 使用 `range` 对其进行迭代等操作。
	for _, num := range nums {
		total += num
	}
	fmt.Println(total)
}

func main() {

	// 可变参数函数可以以通常的方式使用单个参数进行调用。
	sum(1, 2)
	sum(1, 2, 3)

	// 如果你已经在一个切片中有多个参数,
	// 可以像这样使用 `func(slice...)` 将它们应用于可变参数函数。
	nums := []int{1, 2, 3, 4}
	sum(nums...)
}

总结

在本实验中,你学习了如何在 Go 语言中使用可变参数函数。你实现了一个名为 max 的函数,该函数接受任意数量的整数作为参数,并返回最大值。