Maison > développement back-end > Golang > Comment initialiser correctement les structures intégrées dans Go ?

Comment initialiser correctement les structures intégrées dans Go ?

Patricia Arquette
Libérer: 2024-12-24 10:21:24
original
572 Les gens l'ont consulté

How to Correctly Initialize Embedded Structs in Go?

Types de structure intégrés Golang : comprendre la syntaxe et l'utilisation

Lorsque vous travaillez avec des types de structures intégrés dans Go, il est crucial de comprendre leur syntaxe et bon usage. Cet article aborde le problème de l'impossibilité d'initialiser une structure intégrée.

Problème :

Considérez les types suivants :

type Value interface{}

type NamedValue struct {
    Name  string
    Value Value
}

type ErrorValue struct {
    NamedValue
    Error error
}
Copier après la connexion

Tentative de initialiser une ErrorValue en utilisant la syntaxe :

e := ErrorValue{Name: "alpha", Value: 123, Error: err}
Copier après la connexion

aboutit à un erreur.

Solution :

Les types intégrés, également appelés champs sans nom, sont désignés par leur nom de type non qualifié. Dans le code fourni, la syntaxe d'initialisation de ErrorValue est incorrecte.

Conformément à la spécification du langage Go, un champ intégré doit être initialisé en utilisant le nom du type sans nom de champ. Voici la syntaxe correcte :

e := ErrorValue{NamedValue: NamedValue{Name: "fine", Value: 33}, Error: err}
Copier après la connexion

Vous pouvez également omettre les noms de champs du littéral composite :

e := ErrorValue{NamedValue{"fine", 33}, err}
Copier après la connexion

Exemple :

package main

import "fmt"

type Value interface{}

type NamedValue struct {
    Name  string
    Value Value
}

type ErrorValue struct {
    NamedValue
    Error error
}

func main() {
    e := ErrorValue{NamedValue{Name: "alpha", Value: 123}, fmt.Errorf("some error")}
    fmt.Println(e)
}
Copier après la connexion

Sortie :

{NamedValue:{Name:alpha Value:123} Error:some error}
Copier après la connexion

En comprenant la syntaxe et l'utilisation des types de structures, vous pouvez les exploiter efficacement dans vos programmes Go.

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