Junior — Middle
Comment la transmission de valeurs par défaut dans les paramètres de fonctions est-elle implémentée en langage Go?
sobes.tech IA
Réponse de l'IA
Dans le langage Go, il n'existe pas de support intégré pour les paramètres de fonction avec des valeurs par défaut, comme dans certains autres langages (par exemple, Python ou C++). Pour réaliser un comportement similaire, on utilise généralement l'une des approches suivantes :
- Surcharge de fonctions via des paramètres variables — passer un nombre variable d'arguments à la fonction et vérifier leur présence à l'intérieur :
func greet(name string, messages ...string) {
msg := "Hello"
if len(messages) > 0 {
msg = messages[0]
}
fmt.Println(msg, name)
}
// Appels :
greet("Alice") // Hello Alice
greet("Bob", "Hi") // Hi Bob
- Utilisation de structures avec des configurations — passer à la fonction une structure avec des paramètres, où l'on peut définir des valeurs par défaut lors de la création :
type Config struct {
Timeout int
}
func doSomething(cfg Config) {
if cfg.Timeout == 0 {
cfg.Timeout = 30 // valeur par défaut
}
// ...
}
// Appel :
doSomething(Config{})
- Création de fonctions constructeurs auxiliaires avec différents ensembles de paramètres.
Ainsi, en Go, les valeurs par défaut sont implémentées via une logique explicite à l'intérieur de la fonction ou via des structures, et non via la syntaxe du langage.