Maison > développement back-end > Golang > Comment accéder aux champs intégrés dans les structures Go lors de l'utilisation de pointeurs ?

Comment accéder aux champs intégrés dans les structures Go lors de l'utilisation de pointeurs ?

Mary-Kate Olsen
Libérer: 2024-11-01 14:17:02
original
409 Les gens l'ont consulté

How to Access Embedded Fields in Go Structs When Using Pointers?

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

Dans Go, les structures peuvent intégrer d'autres types de structures. Cependant, accéder aux champs intégrés peut parfois s’avérer un défi pour les débutants. Considérez l'extrait de code suivant :

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

type Tires struct {
    number int
}

type Cars struct {
    *Engine
    Tires
}</code>
Copier après la connexion

Ici, la structure Cars intègre le type de pointeur *Engine. Toute tentative de compilation du code entraîne l'erreur suivante :

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

Cette erreur se produit car le champ Engine dans la structure Cars est un pointeur et est initialisé à zéro. Pour accéder au champ d'alimentation du moteur intégré, nous devons initialiser explicitement le champ Moteur :

<code class="go">package main

import "fmt"

type Engine struct {
    power int
}

type Tires struct {
    number int
}

type Cars struct {
    *Engine
    Tires
}

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

Maintenant, le code sera compilé et exécuté avec succès, produisant le résultat suivant :

&{0x10328100 {4}}
&{342} 342
{4} 4
Copier après la connexion

Comme vous pouvez le voir, nous avons pu accéder au champ de puissance de la structure Engine intégrée en initialisant explicitement le champ Engine dans la structure Cars. Il s'agit d'une pratique courante dans Go lorsque vous travaillez avec des structures intégrées.

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