2 回答
TA贡献1827条经验 获得超4个赞
在数学和计算机编程中,可变参数函数是一种不定数量的函数,即接受可变数量的参数的函数。
您的函数签名稍微不正确。
func findMaximum(args ...[]int) []int
这表示findMaximum
接受可变数量的int
切片作为参数并返回一个int
切片。您试图解决的问题是要求接受可变数量的参数并返回所提供集合中最大的int
单数。int
调用你的函数看起来像这样:
largest := findMaximum([]int{1, 2, 3}, []int{4, 5, 6}, []int{7, 8, 9})
在这种情况下,largest
的类型[]int
表明该函数int
以切片的形式返回多个值。这是没有意义的,因为应该只有一个最大值(假设没有重复项)。
您需要一个如下所示的函数签名:
func findMaximum(args ...int) int
调用这个函数看起来像这样:
largest := findMaximum(1, 2, 3, 4, 5, 6, 7, 8, 9)
...或者如果你的数字在一个切片中:
nums := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} largest := findMaximum(nums...)
在这种情况下,largest
将是 类型int
,这是您在此问题中寻找的正确返回值。
祝你好运!
TA贡献1829条经验 获得超9个赞
如果您通过https://play.golang.org/运行代码,您将看到一些语法错误。下面是在切片中找到最大值的正确版本。...
正如您所注意到的,切片参数调用中有额外的内容。
package main
import (
"fmt"
)
func findMaximum(args []int) int {
max := args[0]
for _, v := range args {
if v > max{
max = v
}
}
return max
}
func main() {
x := []int{
48, 96, 86, 68,
57, 82, 63, 70,
37, 34, 83, 27,
19, 97, 9, 17,
}
fmt.Println(findMaximum(x))
}
- 2 回答
- 0 关注
- 124 浏览
添加回答
举报