In Go können Strukturtypen eingebettete Felder enthalten, die das Einbetten eines oder mehrerer Typen in eine Struktur ermöglichen. Diese leistungsstarke Funktion ermöglicht die Wiederverwendung von Code und eine effiziente Speicherverwaltung. Beim Erlernen von Zeigern kann es jedoch schwierig sein, den Zugriff auf diese Felder zu verstehen.
Bedenken Sie die folgenden Strukturdefinitionen:
type Engine struct {
power int
}
type Tires struct {
number int
}
type Cars struct {
*Engine // Embedded field with pointer
Tires // Embedded field without pointer
}
Wie Sie beobachtet haben, ist in der Cars-Struktur ein eingebetteter Typzeiger *Engine definiert. Dies ermöglicht den Zugriff auf die Methoden und Felder des Engine-Typs über die Cars-Struktur.
Um auf das Power-Feld des eingebetteten Engine-Felds zuzugreifen, müssen Sie zunächst sowohl die Engine- als auch die Cars-Strukturen initialisieren. In der Hauptfunktion:
func main() {
car := new(Cars) // Initialize Cars struct
car.Engine = new(Engine) // Initialize Engine struct explicitly
car.power = 342 // Set power field
car.number = 4 // Set number field
}
Durch die explizite Initialisierung beider Strukturen stellen Sie eine Verbindung zwischen dem eingebetteten *Engine-Zeiger und dem tatsächlichen Engine-Objekt her. Jetzt können Sie über die Cars-Struktur auf das Power-Feld zugreifen:
fmt.Println(car.power) // Prints 342
Ähnlich für das nicht in einen Zeiger eingebettete Feld Tires , können Sie direkt auf das Nummernfeld zugreifen:
fmt.Println(car.number) // Prints 4
Dieses Beispiel zeigt, wie eingebettete Felder innerhalb einer Struktur ordnungsgemäß initialisiert und darauf zugegriffen werden , sodass Sie die Code-Wiederverwendung und die effiziente Speicherverwaltung vollständig nutzen können.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3