"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 > ¿Por qué la asignación de punteros en las funciones Go a veces no afecta el valor original?

¿Por qué la asignación de punteros en las funciones Go a veces no afecta el valor original?

Publicado el 2024-11-13
Navegar:399

Why Does Pointer Assignment in Go Functions Sometimes Not Affect the Original Value?

Asignación de puntero en funciones de Go: ¿por qué se obtienen diferentes resultados?

Al pasar un puntero a una función en Go, es fundamental comprender cómo Se utiliza el puntero y las implicaciones que tiene sobre el valor original. Esta discusión gira en torno a un fragmento de código que pasa un puntero a una estructura Prueba, con la intención de modificar su campo Valor.

El primer fragmento de código, a pesar de intentar cambiar el campo Valor asignando una nueva estructura de prueba al puntero (*p = Prueba{4}), no logra alterar el valor real. Esto se debe a que simplemente reasigna la variable de puntero p, no el valor señalado. La variable p dentro de la función f() existe de forma independiente y no tiene ningún impacto en el valor señalado por la variable p en main().

En contraste, el segundo fragmento de código, donde p.Value se establece explícitamente en 4, modifica con éxito el campo Valor. Esto se debe a que el operador elimina la referencia al puntero, lo que permite el acceso y la modificación del valor señalado real.

Como nota adicional, es posible modificar la dirección almacenada en la variable de puntero de la función main() pasando su dirección (*) a la función f(). Sin embargo, este enfoque es menos eficiente y conveniente en comparación con modificar directamente el valor señalado usando p.Value.

Ú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