Maison >développement back-end >Golang >Comment puis-je simuler des arguments de fonction nommée dans Go ?

Comment puis-je simuler des arguments de fonction nommée dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-26 13:00:14310parcourir

How Can I Simulate Named Function Arguments in Go?

Passer des arguments de fonction par nom de champ

Dans Go, les appels de fonction nécessitent que les arguments soient répertoriés dans le même ordre que les paramètres de la fonction. Cependant, vous préférerez peut-être spécifier explicitement les arguments par leur nom comme ceci :

MyFunction(name: "Bob", address: "New York", nick: "Builder", age: 30, value: 1000)

Arguments non nommés non pris en charge

Malheureusement, Go ne prend pas en charge les arguments nommés. pour les fonctions. Comme mentionné dans la spécification Go, vous devez spécifier les valeurs dans l'ordre attendu pour tous les paramètres non variadiques.

Option 1 : Utiliser un Struct Wrapper

Pour imiter nommé arguments, vous pouvez créer une structure qui encapsule les paramètres de la fonction :

type Params struct {
    name, address, nick string
    age, value          int
}

func MyFunction(p Params) {
    // perform some operations using p.name, p.address, etc.
}

func main() {
    MyFunction(Params{
        name:    "Bob",
        address: "New York",
        nick:    "Builder",
        age:     30,
        value:   1000,
    })
}

Option 2 : Utiliser un assistant Fonction

Si vous ne pouvez pas modifier la fonction d'origine, créez une fonction d'assistance qui prend un paramètre struct et appelle la fonction d'origine avec les champs appropriés comme arguments.

func MyFunction2(p Params) {
    MyFunction(p.name, p.address, p.nick, p.age, p.value)
}

func main() {
    MyFunction2(Params{
        name:    "Bob",
        address: "New York",
        nick:    "Builder",
        age:     30,
        value:   1000,
    })
}

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!

Déclaration:
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