Maison  >  Article  >  développement back-end  >  Comment éviter les erreurs de compilation lors de l'accès aux champs de structure intégrés dans Go ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 10:28:30256parcourir

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>

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]

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>

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!

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