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 關注
- 177 瀏覽
添加回答
舉報