Dans Go, le type http.Request est une grande structure contenant diverses informations sur une requête HTTP. Pour gérer efficacement les requêtes HTTP, Go utilise des pointeurs pour éviter la surcharge liée à la copie de structures de données volumineuses.
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)
}
Si vous supprimez l'astérisque (*) dans *http.Request, vous rencontrerez une erreur car le littéral func attend un pointeur vers le type http.Request.
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
Les pointeurs sont utilisés dans Go pour transmettre des références à des objets, plutôt que des copies des objets eux-mêmes. C'est plus efficace, surtout pour les grandes structures comme http.Request. De plus, http.Request contient des informations d'état, telles que les en-têtes HTTP et le corps de la requête, qui pourraient prêter à confusion si elles étaient copiées.
Par conséquent, l'argument http.Request doit être un pointeur pour garantir un traitement efficace des requêtes HTTP. et pour maintenir l'intégrité des informations d'état qu'il contient.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3