Heim >Backend-Entwicklung >Golang >Wie bette ich eine „net/http.Request' in eine Go-Struktur ein?

Wie bette ich eine „net/http.Request' in eine Go-Struktur ein?

Linda Hamilton
Linda HamiltonOriginal
2024-11-12 05:30:021020Durchsuche

How to Embed a `net/http.Request`  in a Go Struct?

Einen net/http.Request in eine Go-Struktur einbetten

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:

Verwenden eines zusammengesetzten Literals

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.

Verwendung eines Zeigerempfängers

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!

Stellungnahme:
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