inicializando una estructura integrada en Go
cuando se trabaja con estructuras incrustadas en GO, un escenario común implica inicializar la estructura anónima interna. Este artículo aborda dicho escenario, proporcionando una comprensión clara de cómo lograr la inicialización utilizando dos enfoques.
Considere la siguiente estructura integrada myRequest:
type MyRequest struct { http.Request PathParams map[string]string }
Para inicializar MyRequest, necesitamos establecer los valores para su estructura http.request incrustada. Así es como se puede hacer:
func New(origRequest *http.Request, pathParams map[string]string) *MyRequest { req := new(MyRequest) req.PathParams = pathParams req.Request = origRequest return req }
En este enfoque, primero creamos un nuevo objeto MyRequest y lo asignamos a req. Luego establecemos el campo PathParams en consecuencia. Posteriormente, accedemos y establecemos el http.request struct incrustado haciendo referencia a req.request.
alternativamente, también podemos inicializar la estructura incrustada usando la siguiente sintaxis:
req := &MyRequest{ PathParams: pathParams Request: origRequest }
aquí, creamos una estructura anónima con los campos requeridos. Es importante prefijo el nombre de estructura integrado con '&' para una inicialización adecuada. Esto da como resultado un objeto MyRequest con los valores deseados.
, ambos enfoques inicializan efectivamente la estructura http.request integrada dentro de MyRequest, lo que le permite personalizarlo y usarlo según sea necesario. Para obtener más referencia, consulte la especificación GO en campos con nombre para estructuras integradas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3