"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 > Vaya al método de receptor de puntero de lenguaje modificar el valor de no ponderar? Explicación detallada

Vaya al método de receptor de puntero de lenguaje modificar el valor de no ponderar? Explicación detallada

Publicado el 2025-03-11
Navegar:390

Why Does Go's Method with a Pointer Receiver Seem to Modify Non-Pointer Values?

con el receptor de puntero

en el recorrido por Go, el ejercicio 51 explora los receptores del método. La explicación proporcionada establece que el método de escala, que opera en un puntero a un vértice, no tiene ningún efecto cuando recibe un valor de vértice directamente. Sin embargo, la modificación de la función principal para pasar un vértice que no es de inicio contradice esta afirmación.

¿por qué la discrepancia?

a pesar de que el código recibe un valor de no popa, la escala modifica con éxito la variable. Este comportamiento se puede atribuir al fuerte sistema de tipificación de GO. Cuando se espera un puntero a t en un determinado contexto, solo un puntero a t (*t) puede satisfacer ese requisito.

el compilador emplea un transformación detrás de escena para habilitar este comportamiento:

"una llamada de método x.m () es válido si el conjunto de métodos de (el tipo de) contiene M y la lista de argumentos se puede asignar a la lista de parámetro X y el conjunto de métodos de X contiene M, x.m () es una cortocijana para (& x) .m (): "

en esencia, el compilador reescribe el código para pasar un puntero al valor que no es de inicio cuando la variable de recepción tiene un tipo de receptor de puntero. Esto habilita el método de escala para modificar la variable original.

Ú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