In Go können Sie einen Strukturtyp in einen anderen einbetten. Dadurch können Sie Felder aus der eingebetteten Struktur wiederverwenden, ohne sie erneut in der äußeren Struktur definieren zu müssen.
Betrachten Sie das folgende Beispiel:
type MyRequest struct { http.Request PathParams map[string]string }
Hier bettet die MyRequest-Struktur das http ein. Struktur anfordern. Dies bedeutet, dass auf jedes Feld von http.Request als Feld von MyRequest zugegriffen werden kann. Darüber hinaus verfügt MyRequest über ein eigenes PathParams-Feld.
Um die anonyme innere Struktur http.Request in der New-Funktion zu initialisieren, müssen Sie die entsprechenden Felder festlegen. Sie können dies auf zwei Arten tun:
req := new(MyRequest) req.PathParams = pathParams req.Request = origRequest
Mit der zusammengesetzten Literal-Syntax können Sie eine neue Instanz einer Struktur erstellen und ihre Felder in einer Zeile initialisieren. In diesem Fall erstellen wir eine neue MyRequest-Instanz und setzen deren PathParams-Feld auf den Wert des pathParams-Arguments. Außerdem setzen wir das Request-Feld auf den Wert des origRequest-Arguments.
req := &MyRequest{ PathParams: pathParams Request: origRequest }
Mit der Zeigerempfängersyntax können Sie direkt auf die Felder eines Strukturzeigers zugreifen. In diesem Fall erstellen wir einen neuen Zeiger auf eine MyRequest-Instanz und legen deren PathParams- und Request-Felder direkt fest.
Beide dieser Ansätze initialisieren die innere Struktur http.Request in der MyRequest-Struktur mit dem Wert von origRequest-Argument.
Weitere Informationen zum Einbetten und zur Benennung der Felder finden Sie in der Go-Spezifikation unter http://golang.org/ref/spec#Struct_types.
Das obige ist der detaillierte Inhalt vonWie bette ich eine „net/http.Request' in eine Go-Struktur ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!