Maison > développement back-end > Golang > Comment puis-je appliquer la conformité des paramètres dans les fonctions variadiques de Go ?

Comment puis-je appliquer la conformité des paramètres dans les fonctions variadiques de Go ?

Mary-Kate Olsen
Libérer: 2024-12-07 19:12:14
original
635 Les gens l'ont consulté

How Can I Enforce Parameter Compliance in Go's Variadic Functions?

Application de la conformité des paramètres avec les fonctions variadiques dans Go

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.

Solution : Modifier la signature de la fonction

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
}
Copier après la connexion

Exemple d'utilisation

Avec cette signature, la fonction min peut être appelée comme suit :

min(1) // Valid
min(1, 2) // Valid
min(1, 2, -3) // Valid
Copier après la connexion

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
Copier après la connexion

Gestion des fonctions avec deux variables Paramètres

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
}
Copier après la connexion

Considérations supplémentaires

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:]...))
Copier après la connexion

Approches alternatives

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal