type structs learn golang example create struct go

structs - struct en go



Inicializar estructura incrustada en Go (3)

Tengo la siguiente struct que contiene una net/http.Request :

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

Ahora quiero inicializar la estructura interna anónima http.Request en la siguiente función:

func New(origRequest *http.Request, pathParams map[string]string) *MyRequest { req := new(MyRequest) req.PathParams = pathParams return req }

¿Cómo puedo inicializar la estructura interna con el parámetro origRequest ?


Como Jeremy muestra arriba, el "nombre" de un campo anónimo es el mismo que el tipo del campo. Entonces, si el valor de x fuera una estructura que contiene un int anónimo, entonces x.int se referiría a ese campo.


Qué pasa:

func New(origRequest *http.Request, pathParams map[string]string) *MyRequest { return &MyRequest{*origRequest, pathParams} }

Muestra que en lugar de

New(foo, bar)

es posible que prefiera solo

&MyRequest{*foo, bar}

directamente.


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

o...

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

Consulte: http://golang.org/ref/spec#Struct_types para obtener más información sobre la incrustación y sobre cómo se nombran los campos.