Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo utilizar el paso de parámetros y la llamada de funciones en el lenguaje Go

Cómo utilizar el paso de parámetros y la llamada de funciones en el lenguaje Go

Pasar parámetros de función por valor es una llamada a un método que copia el valor real del parámetro al parámetro formal de la función. En este caso, cambiar los parámetros dentro de la función no tiene ningún efecto sobre los parámetros.

De forma predeterminada, el lenguaje de programación Go utiliza métodos de llamada por valor para pasar parámetros. En general, esto significa que el código dentro de una función no puede cambiar los parámetros utilizados para llamar a la función. Considere la función swap() definida de la siguiente manera.

El código es el siguiente:

/* definición de función para intercambiar los valores */

func swap(int x, int y) int {

var temp int

temp = x /* guardar el valor de x */

x = y /* poner y en x */

y = temp /* poner temp en y */

return temp;

}

Ahora, llamemos a la función swap haciendo el valor real como en el siguiente ejemplo ():

El código es el siguiente:

paquete principal

importar "fmt"

func main() {

/* definición de variable local */

var a int = 100

var b int = 200

fmt.Printf("Antes del intercambio, valor de a: d\n", a)

fmt.Printf("Antes del intercambio, valor de b: d\n", b)

/* llamando a una función para intercambiar los valores */

swap(a, b)

fmt.Printf("Después del intercambio, valor de a: d\ n", a)

fmt .Printf("Después del intercambio, valor de b: d\n", b)

}

func swap(x , y int) int {

var temp int

temp = x /* guardar el valor de x */

x = y /* poner y en x */

y = temp /* poner temp en y */

return temp;

}

Pongamos el código anterior en un archivo C, compílelo y ejecútelo. Produce los siguientes resultados:

Antes del intercambio, valor de a: 100

Antes del intercambio, valor de b: 200

Después del intercambio, valor de a: 100

Después del intercambio, valor de b: 200

Esto muestra que los valores de los parámetros no han sido cambiados, aunque sí Se han modificado dentro de la función.

Al pasar parámetros de función, la dirección del parámetro se copia a la llamada al método de referencia del parámetro formal. Dentro de la función, la dirección es el parámetro real utilizado en la llamada de acceso. Esto significa que los cambios en los parámetros afectarán a los parámetros pasados.

Para pasar un valor por referencia, el puntero del parámetro se pasa a la función como cualquier otro valor. Por lo tanto, en consecuencia, debe declarar los parámetros de la función como tipos de puntero, como la siguiente función swap(), que intercambia los valores de dos variables enteras que apuntan a sus parámetros.

El código es el siguiente:

/* definición de función para intercambiar los valores */

func swap(x *int, y *int) {

var temp int

temp = *x /* guardar el valor en la dirección x */

*x = *y /* poner y en x */

*y = temp /* poner temp en y */

}

Ahora, llamemos a la función swap() pasando el valor numérico por referencia como en el siguiente ejemplo:

El código es el siguiente:

paquete principal

importar "fmt"

func main () {

/*definición de variable local */

var a int = 100

var b int= 200

fmt. Printf("Antes del intercambio, valor de a: d\n", a )

fmt.Printf("Antes del intercambio, valor de b : d\n", b )

/* llamando a una función para intercambiar los valores.

* &a indica un puntero a, es decir, la dirección de la variable a y

* &b indica un puntero a b, es decir. de la variable b.

*/

swap(amp; a, amp; b)

fmt.Printf("Después del intercambio, valor de a: d \n", a)

fmt.Printf("Después del intercambio, valor de b: d\n", b )

}

func swap( x *int, y *int) {

var temp int

temp = *x /* guardar el valor en la dirección x */

*x = *y /* poner y en x */

*y = temp /* poner temp en y */

}

Pongamos el código anterior en un archivo C, compílelo y ejecútelo, producirá los siguientes resultados:

Antes del intercambio, valor de a: 100

Antes del intercambio, valor de b: 200

Después del intercambio, valor de a:200

Después del intercambio, valor de b:100

Esto indica que la función modificada y el cambio distinto de la encarnación externa llamada por El valor no se puede reflejar fuera de la función.