Maison >développement back-end >Golang >Comment éviter les erreurs de compilation lors de l'accès aux champs de structure intégrés dans 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!