Maison >développement back-end >Golang >Comment intégrer un « net/http.Request » dans une structure Go ?

Comment intégrer un « net/http.Request » dans une structure Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-12 05:30:021020parcourir

How to Embed a `net/http.Request`  in a Go Struct?

Intégrer un net/http.Request dans une structure Go

Dans Go, vous pouvez intégrer un type de structure dans un autre. Cela vous permet de réutiliser les champs de la structure intégrée sans avoir à les définir à nouveau dans la structure externe.

Considérez l'exemple suivant :

type MyRequest struct {
    http.Request
    PathParams map[string]string
}

Ici, la structure MyRequest intègre le http. Structure de requête. Cela signifie que n'importe quel champ de http.Request est accessible en tant que champ de MyRequest. De plus, MyRequest possède son propre champ PathParams.

Pour initialiser la structure interne anonyme http.Request dans la fonction New, vous devez définir les champs appropriés. Vous pouvez le faire de deux manières :

Utiliser un littéral composite

req := new(MyRequest)
req.PathParams = pathParams
req.Request = origRequest

La syntaxe du littéral composite vous permet de créer une nouvelle instance d'une structure et d'initialiser ses champs sur une seule ligne. Dans ce cas, nous créons une nouvelle instance MyRequest et définissons son champ PathParams sur la valeur de l'argument pathParams. Nous définissons également le champ Request sur la valeur de l'argument origRequest.

Utilisation d'un récepteur de pointeur

req := &MyRequest{
  PathParams: pathParams
  Request: origRequest
}

La syntaxe du récepteur de pointeur vous permet d'accéder directement aux champs d'un pointeur de structure. Dans ce cas, nous créons un nouveau pointeur vers une instance MyRequest et définissons directement ses champs PathParams et Request.

Ces deux approches initialiseront la structure interne http.Request dans la structure MyRequest avec la valeur du argument origRequest.

Pour plus d'informations sur l'intégration et la manière dont les champs sont nommés, veuillez vous référer à la spécification Go sur http://golang.org/ref/spec#Struct_types.

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!

Déclaration:
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