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.