Le funzioni variadiche in Go consentono di passare un numero variabile di argomenti a una funzione. Questa funzionalità è utile quando non si sa in anticipo quanti argomenti verranno passati. Una funzione variadica di Golang accetta più argomenti dello stesso tipo e può essere chiamata con un numero qualsiasi di argomenti, anche nessuno.

package main
import "fmt"
// Hàm Variadic tính tổng
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
func main() {
fmt.Println("Sum of 1, 2, 3:", sum(1, 2, 3))
fmt.Println("Sum of 4, 5:", sum(4, 5))
fmt.Println("Sum of no numbers:", sum())
}
Risultato:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Sintassi:
func functionName(parameters ...Type) ReturnType {
// Code
}
Nella sintassi sopra:
parameters ...Type
indica che la funzione può accettare un numero variabile di argomenti di tipo Type.
- È possibile accedere agli argomenti di una funzione come se fossero una slice.
Come utilizzare le funzioni incerte in Golang
Utilizzo delle funzioni Variadiche
Quando si definisce una funzione variadica, si specifica il tipo di argomento seguito da puntini di sospensione (...), come nell'esempio precedente. All'interno della funzione, questi argomenti possono essere considerati come una porzione.
Chiamata di una funzione variadica
È possibile richiamare una funzione variadica con un numero qualsiasi di argomenti, incluso zero. Questa funzione tratta gli argomenti come una fetta.
Per esempio:
package main
import "fmt"
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
func main() {
fmt.Println("Sum of 1, 2, 3:", sum(1, 2, 3))
fmt.Println("Sum of 4, 5:", sum(4, 5))
fmt.Println("Sum of no numbers:", sum())
}
Risultato:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Funzione variadica con parametri diversi
È anche possibile combinare parametri variadici con parametri regolari in una funzione. I parametri variadici devono essere sempre l'ultimo parametro.
Per esempio:
package main
import "fmt"
// Hàm Variadic tính tổng
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
// Hàm với tham số thông thường và variadic
func greet(prefix string, nums ...int) {
fmt.Println(prefix)
for _, n := range nums {
fmt.Println("Number:", n)
}
}
func main() {
greet("Sum of numbers:", 1, 2, 3)
greet("Another sum:", 4, 5)
greet("No numbers sum:")
}
Risultato:
Sum of numbers:
Number: 1
Number: 2
Number: 3
Another sum:
Number: 4
Number: 5
No numbers sum:
Limitazioni delle funzioni variadiche
- Le funzioni variadiche possono avere un solo parametro variadico e questo deve essere l'ultimo parametro.
- Non è possibile avere più parametri variadici in una singola definizione di funzione.