"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cuándo necesitas paréntesis al inicializar estructuras Go?

¿Cuándo necesitas paréntesis al inicializar estructuras Go?

Publicado el 2024-11-08
Navegar:783

When do you need parentheses when initializing Go structs?

Inicialización de estructuras de Go con paréntesis

Al inicializar estructuras en Go, el uso de paréntesis no es necesario, pero puede ser preferible en determinadas situaciones.

Por lo general, una estructura se inicializa usando llaves, como se ve en:

item1 := Item{1, "Foo"}

Sin embargo, es igualmente válido inicializar una estructura con paréntesis:

item2 := (Item{2, "Bar"})

Ambas líneas crean instancias de la estructura Item y las asignan a item1 y item2 respectivamente. La reflexión sobre ambas estructuras devolverá el mismo nombre.

Los paréntesis sirven principalmente para eliminar la ambigüedad de la sintaxis cuando se utiliza una inicialización de estructura dentro de una declaración if. Sin paréntesis, el siguiente código generará un error de compilación:

if i := Item{3, "a"}; i.Id == 3 {
}

El compilador no puede determinar si la llave de apertura pertenece al literal compuesto o al cuerpo de la declaración if. Agregar paréntesis resuelve esta ambigüedad:

if i := (Item{3, "a"}); i.Id == 3 {
}

En este caso, los paréntesis indican explícitamente que el literal compuesto es el valor asignado a i. Para obtener más detalles, consulte la página "Estructura del inicializador de bucle for".

Último tutorial Más>

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