Junior — Middle
Comment implémenter le transfert des valeurs des arguments à une fonction si les paramètres n'ont pas été explicitement passés lors de l'appel?
sobes.tech IA
Réponse de l'IA
En Go, il n’y a pas de support pour les paramètres par défaut comme dans certains autres langages. Pour implémenter le passage de valeurs d’arguments lorsque les paramètres ne sont pas explicitement fournis, on utilise généralement l’une des approches suivantes :
- Utilisation de paramètres variables (
...) — permet de passer un nombre arbitraire d’arguments, et à l’intérieur de la fonction, vérifier s’ils ont été passés et définir des valeurs par défaut si nécessaire.
func exemple(args ...int) {
var val int
if len(args) > 0 {
val = args[0]
} else {
val = 42 // valeur par défaut
}
fmt.Println(val)
}
- Transmission d’une structure avec des paramètres — une structure avec des paramètres est créée, et si les champs ne sont pas remplis, des valeurs par défaut sont définies à l’intérieur de la fonction.
type Config struct {
Param int
}
func exemple(cfg Config) {
if cfg.Param == 0 {
cfg.Param = 42 // valeur par défaut
}
fmt.Println(cfg.Param)
}
- Utilisation de pointeurs et vérification de nil — si le paramètre est passé en tant que pointeur, il est possible de vérifier s’il a été passé et de définir une valeur par défaut.
Ainsi, en Go, le comportement des paramètres par défaut est généralement implémenté via des vérifications supplémentaires à l’intérieur de la fonction, car il n’existe pas de syntaxe pour les paramètres par défaut.