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.
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