Wie können Sie ein eingebettetes Strukturfeld mithilfe einer vorhandenen Instanz in Go initialisieren?

DDD
Freigeben: 2024-11-12 06:03:02
Original
914 Leute haben es durchsucht

How Can You Initialize an Embedded Struct Field Using an Existing Instance in Go?

Probleme bei der Initialisierung eingebetteter Strukturen in Go

Eingebettete Strukturen bieten in Go erhebliche Vorteile, können jedoch manchmal besondere Herausforderungen darstellen, insbesondere während der Initialisierung. Stellen Sie sich das folgende Szenario vor, in dem eine Struktur, die eine anonyme innere Struktur enthält, mit einer vorhandenen Instanz der inneren Struktur initialisiert werden muss.

type MyRequest struct {
    Request http.Request
    PathParams map[string]string
}
func New(origRequest *http.Request, pathParams map[string]string) *MyRequest {
    // How to initialize "Request" field with "origRequest"?
}
Nach dem Login kopieren

Lösung

Um dieses Problem anzugehen, gibt es zwei mögliche Lösungen Optionen:

Option 1:

req := new(MyRequest)
req.PathParams = pathParams
req.Request = *origRequest
Nach dem Login kopieren

Bei diesem Ansatz wird eine neue Instanz von MyRequest mit new erstellt. Das PathParams-Feld wird mit der bereitgestellten pathParams-Zuordnung initialisiert. Die anonyme innere Struktur Request wird initialisiert, indem ihr explizit der dereferenzierte Wert von origRequest zugewiesen wird.

Option 2:

req := &MyRequest{
    PathParams: pathParams,
    Request: origRequest,
}
Nach dem Login kopieren

Diese Alternative Der Ansatz verwendet eine zusammengesetzte Literalsyntax, um eine neue Instanz von MyRequest zu erstellen. Sowohl die PathParams- als auch die Request-Felder werden innerhalb des Literals initialisiert. Es ist wichtig zu beachten, dass das Feld „Anfrage“ initialisiert wird, ohne die Notwendigkeit einer Dereferenzierung.

Grundlegendes zur Benennung eingebetteter Strukturfelder

Wenn eine anonyme innere Struktur in eine größere Struktur eingebettet ist , erben die eingebetteten Felder den Namen der äußeren Struktur. In diesem Fall werden sowohl PathParams als auch Request zu Feldern von MyRequest. Weitere Informationen finden Sie in der Go-Spezifikation zu [Strukturtypen](https://go.dev/ref/spec#Struct_types).

Das obige ist der detaillierte Inhalt vonWie können Sie ein eingebettetes Strukturfeld mithilfe einer vorhandenen Instanz in Go initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage