Funzioni Variadiche
Una funzione variadica accetta un numero indefinito di argomenti tutti dello stesso tipo.
Può accettare anche argomenti definiti, che devono essere dichiarati prima di quelli variadici: solo l'ultimo argomento può essere variadico, e ve ne può essere uno solo.
(140variadic-functions.go):
package main
import "fmt"
// Funzione variadica
// Un numero qualsiasi di argomenti dello stesso tipo
func sum(nums ...int) {
fmt.Print(nums, " ")
total := 0
// range scandisce gli argomenti
// Il primo parametro è l'indice
for _, num := range nums {
total += num
}
fmt.Println(total)
}
func main() {
// Invocazione di funzione variadica
sum(1, 2)
sum(1, 2, 3)
// Una funzione variadica accetta come parametro
// attuale una collezione
nums := []int{1, 2, 3, 4}
sum(nums...)
}
Molte funzioni di libreria sono variadiche, p.es. fmt.Printf()
.
L'argomento formale variadico ha i tre punti prima del tipo, senza spazi.
L'argomento attuale variadico ha i tre punti dopo il nome, senza spazi.