„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum muss das Argument „http.Request“ ein Zeiger in Go sein?

Warum muss das Argument „http.Request“ ein Zeiger in Go sein?

Veröffentlicht am 14.11.2024
Durchsuche:664

Why Does the `http.Request` Argument Need to Be a Pointer in Go?

Warum muss das HTTP-Request-Argument ein Zeiger sein?

In Go ist der Typ http.Request eine große Struktur, die verschiedene Informationen zu einer HTTP-Anfrage enthält. Um HTTP-Anfragen effizient zu verarbeiten, verwendet Go Zeiger, um den Aufwand für das Kopieren großer Datenstrukturen zu vermeiden.

package main

import (
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("hello world"))
    })
    http.ListenAndServe(":8000", nil)
}

Wenn Sie das Sternchen (*) in *http.Request entfernen, wird ein Fehler auftreten, da das Funktionsliteral einen Zeiger auf den Typ http.Request erwartet.

  

github.com/creating_web_app_go/main.go:8: cannot use func literal (type func(http.ResponseWriter, http.Request)) as type func(http.ResponseWriter, *http.Request) in argument to http.HandleFunc

Zeiger werden in Go verwendet, um Referenzen auf Objekte zu übergeben, statt Kopien der Objekte selbst. Dies ist insbesondere bei großen Strukturen wie http.Request effizienter. Darüber hinaus enthält http.Request Statusinformationen wie die HTTP-Header und den Anforderungstext, deren Kopieren verwirrend wäre.

Daher muss das Argument http.Request ein Zeiger sein, um eine effiziente Verarbeitung von HTTP-Anforderungen sicherzustellen und um die Integrität der darin enthaltenen Statusinformationen zu wahren.

Neuestes Tutorial Mehr>

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