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 ?

Pourquoi « *http.Request » est-il un pointeur mais « http.ResponseWriter » n'est-il pas dans les gestionnaires HTTP Go ?

Barbara Streisand
Libérer: 2024-12-24 13:59:10
original
176 Les gens l'ont consulté

Why is `*http.Request` a Pointer but `http.ResponseWriter` is Not in Go HTTP Handlers?

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) {}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal