Maison > développement back-end > Golang > Comment puis-je réaliser l'initialisation d'un champ nommé dans les appels de fonction Go ?

Comment puis-je réaliser l'initialisation d'un champ nommé dans les appels de fonction Go ?

Patricia Arquette
Libérer: 2024-12-13 05:35:09
original
504 Les gens l'ont consulté

How Can I Achieve Named Field Initialization in Go Function Calls?

Initialisation des champs nommés dans les fonctions

Lors de la définition de fonctions dans Go, il est courant de spécifier les paramètres en utilisant leurs types respectifs. Cependant, pour des raisons de lisibilité et de clarté, il peut parfois être souhaitable d'initialiser les champs de la fonction à l'aide de leurs noms.

Malheureusement, Go ne prend pas en charge l'initialisation des champs nommés directement dans les appels de fonction. Au lieu de cela, les valeurs doivent être fournies dans l'ordre attendu.

Pour surmonter cette limitation, envisagez les approches suivantes :

Utilisation d'un Struct

A la solution courante consiste à créer une structure qui encapsule les champs de la fonction. Modifiez la fonction pour accepter un pointeur vers la structure, comme le montre l'exemple suivant :

import "fmt"

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

func MyFunction(p *Params) {
    // Perform operations here
    fmt.Printf("%s lives in %s.\n", p.name, p.address)
}

func main() {
    params := Params{
        name:    "Bob",
        address: "New York",
        nick:    "Builder",
        age:     30,
        value:   1000,
    }
    MyFunction(&params)
}
Copier après la connexion

Utilisation d'une fonction d'assistance

Une approche alternative consiste à créer un fonction wrapper qui accepte les champs nommés et appelle en interne la fonction d'origine avec les paramètres appropriés. Considérez l'extrait de code suivant :

import "fmt"

func MyFunction(name, address, nick string, age, value int) {
    // Perform operations here
    fmt.Printf("%s lives in %s.\n", name, address)
}

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

func main() {
    params := Params{
        name:    "Alice",
        address: "Washington",
    }
    MyFunction2(params)
}
Copier après la connexion

En conclusion, même si Go ne prend pas directement en charge l'initialisation des champs nommés dans les appels de fonction, l'utilisation d'une structure ou la création d'une fonction d'assistance peut fournir une solution de contournement pour ces situations spécifiques.

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