Maison > développement back-end > Golang > le corps du texte

Comment éviter les erreurs de compilation lors de l'accès aux champs de structure intégrés dans Go ?

Linda Hamilton
Libérer: 2024-10-27 10:28:30
original
271 Les gens l'ont consulté

How to Avoid Compilation Errors When Accessing Embedded Struct Fields in Go?

Accès aux champs de type de structure intégré

Lors de la définition de nouveaux types de structure, il est possible d'intégrer d'autres structures en tant que champs. Cela peut être utile pour créer des structures de données complexes ou hériter de fonctionnalités. Cependant, l'accès aux champs de structure intégrés peut parfois entraîner des erreurs de compilation en raison de la gestion du pointeur.

Considérez le code suivant :

<code class="go">type Engine struct {
    power int
}

type Tires struct {
    number int
}

type Cars struct {
    *Engine
    Tires
}

func main() {
    car := new(Cars)
    car.number = 4
    car.power = 342
    fmt.Println(car)
}</code>
Copier après la connexion

Ce code tente d'intégrer une structure Engine en tant que champ de pointeur ( *Engine) dans la structure Cars. Bien que la syntaxe soit correcte, la compilation du code entraîne l'erreur suivante :

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x23bb]
Copier après la connexion

Pour résoudre ce problème, il est nécessaire d'initialiser correctement le champ Moteur embarqué. Ceci peut être réalisé en utilisant des pointeurs vers la structure intégrée :

<code class="go">func main() {
    car := new(Cars)
    car.Engine = new(Engine) // Initialize the Engine pointer
    car.power = 342
    car.number = 4
    fmt.Println(car)
}</code>
Copier après la connexion

Maintenant, le code se compile avec succès et accède au champ intégré "power" sans rencontrer d'erreurs.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!