Les fonctions variadiques en Go vous permettent de passer un nombre variable d'arguments à une fonction. Cette fonctionnalité est utile lorsque vous ne savez pas à l'avance combien d'arguments vous allez passer. Une fonction variadique Golang accepte plusieurs arguments du même type et peut être appelée avec n'importe quel nombre d'arguments, y compris aucun.

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())
}
Résultat:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Syntaxe:
func functionName(parameters ...Type) ReturnType {
// Code
}
Dans la syntaxe ci-dessus :
parameters ...Type
indique que la fonction peut accepter un nombre variable d'arguments de type Type.
- Vous pouvez accéder aux arguments d’une fonction sous forme de tranche.
Comment utiliser les fonctions incertaines dans Golang
Utilisation des fonctions variadiques
Lors de la définition d'une fonction variadique, vous spécifiez le type d'argument suivi d'une ellipse (...) comme dans l'exemple ci-dessus. À l’intérieur de la fonction, ces arguments peuvent être considérés comme une tranche.
Appel d'une fonction variadique
Vous pouvez appeler une fonction variadique avec n’importe quel nombre d’arguments, y compris zéro. Cette fonction traite les arguments comme une tranche.
Par exemple:
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())
}
Résultat:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Fonction variadique avec différents paramètres
Vous pouvez également combiner des paramètres variadiques avec des paramètres réguliers dans une fonction. Les paramètres varadiques doivent toujours être le dernier paramètre.
Par exemple:
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:")
}
Résultat:
Sum of numbers:
Number: 1
Number: 2
Number: 3
Another sum:
Number: 4
Number: 5
No numbers sum:
Limitations des fonctions variadiques
- Les fonctions variadiques ne peuvent avoir qu'un seul paramètre variadique et celui-ci doit être le dernier paramètre.
- Vous ne pouvez pas avoir plusieurs paramètres variadiques dans une seule définition de fonction.