Поддерживает ли Golang вариационную функцию?
Интересно, так или иначе, я могу определить функцию для неизвестного числа переменных в Go.
Что-то вроде этого
func Add(num1... int) int {
return args
}
func main() {
fmt.Println("Hello, playground")
fmt.Println(Add(1, 3, 4, 5,))
}
Я хочу обобщить функцию добавления для любого количества входов.
Ответы
Ответ 1
Вы в значительной степени получили это, из того, что я могу сказать, но синтаксис ...int
. См. спецификацию:
С учетом функции и вызова
func Greeting(prefix string, who ...string)
Greeting("hello:", "Joe", "Anna", "Eileen")
в приветствии, who
будет иметь значение []string{"Joe", "Anna", "Eileen"}
Ответ 2
При использовании вариационных параметров вам нужно использовать цикл в типе данных внутри вашей функции.
func Add(nums... int) int {
total := 0
for _, v := range nums {
total += v
}
return total
}
func main() {
fmt.Println("Hello, playground")
fmt.Println(Add(1, 3, 4, 5,))
}