Bien que le langage Go permette l'utilisation de fonctions variadiques sans paramètres fournis, il peut être souhaitable d'empêcher de tels scénarios, les considérant comme des bugs potentiels dans le code de l'appelant. Cependant, y parvenir en tant qu'erreur de compilation n'est pas directement pris en charge par le langage.
Pour surmonter cette limitation, vous pouvez modifier la signature de votre fonction pour inclure à la fois un paramètre non variadique et variadique. Cette approche garantit qu'au moins un paramètre est fourni lors de l'invocation de la fonction. Par exemple :
func min(first int, rest ...int) int { // Implement your logic here return 0 }
Avec cette signature, la fonction min peut être appelée comme suit :
min(1) // Valid min(1, 2) // Valid min(1, 2, -3) // Valid
Cependant, tenter d'appeler la fonction sans tous les arguments entraînent une erreur de compilation :
min() // Error: not enough arguments in call to min
Si vous exigez qu'au moins deux arguments soient fournis, la signature de la fonction peut être encore modifiée :
func min(first, second int, rest ...int) int { // Implement your logic here return 0 }
Bien que cette technique applique efficacement la disposition d'au moins un paramètre, il est important de peser les compromis. Plus précisément, la gestion des fonctions avec des tranches prédéfinies peut introduire des étapes supplémentaires dans le code appelant, comme indiqué ci-dessous :
s := []int{1, 2, -3} fmt.Println(min(s[0], s[1:]...))
Si la modification de la signature de la fonction n'est pas réalisable, une panique à l'exécution ou des mécanismes de sortie peuvent être utilisés pour gérer les cas où aucun paramètre n'est fourni. Cependant, cette approche ne peut pas empêcher la compilation et repose sur une manipulation appropriée au stade de l'exécution.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!