Maison >développement back-end >Golang >Pourquoi « *http.Request » est-il un pointeur mais « http.ResponseWriter » n'est-il pas dans les gestionnaires HTTP Go ?
Pointeurs dans les gestionnaires HTTP
Dans Go, la signature d'une fonction de gestionnaire HTTP ressemble généralement à ceci :
func handle(w http.ResponseWriter, r *http.Request) {}
Cette signature soulève une question pour les nouveaux venus dans les pointeurs : pourquoi l'objet Request est-il un pointeur, alors que le ResponseWriter est non ?
Pour comprendre cela, il est crucial d'approfondir les spécificités des deux types.
Le ResponseWriter représente l'objet de réponse HTTP. Cependant, sous la surface, il s'agit en fait d'un pointeur vers un type non exporté appelé http.response, qui encapsule les éléments internes de la gestion des réponses HTTP. Puisque ResponseWriter est une interface, cette implémentation sous-jacente n'est pas exposée.
En revanche, l'objet Request est un pointeur vers une structure concrète (Request), qui contient des champs représentant divers aspects de la requête HTTP, tels que les en-têtes. , le corps et les informations sur l'URL. Contrairement au ResponseWriter, qui gère la réponse du serveur, l'objet Request est principalement utilisé pour accéder aux données de requête du client. Le passer sous forme de pointeur permet au gestionnaire de modifier directement les paramètres de la requête, si nécessaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!