Ir - Llamar por valor

los call by valueEl método de pasar argumentos a una función copia el valor real de un argumento en el parámetro formal de la función. En este caso, los cambios realizados en el parámetro dentro de la función no tienen ningún efecto en el argumento.

De forma predeterminada, el lenguaje de programación Go utiliza el método de llamada por valor para pasar argumentos. En general, esto significa que el código dentro de una función no puede alterar los argumentos utilizados para llamar a la función. Considere la funciónswap() definición de la siguiente manera.

/* function definition to swap the values */
func swap(int x, int y) int {
   var temp int

   temp = x /* save the value of x */
   x = y    /* put y into x */
   y = temp /* put temp into y */

   return temp;
}

Ahora, llamemos a la función swap() pasando valores reales como en el siguiente ejemplo:

package main

import "fmt"

func main() {
   /* local variable definition */
   var a int = 100
   var b int = 200

   fmt.Printf("Before swap, value of a : %d\n", a )
   fmt.Printf("Before swap, value of b : %d\n", b )

   /* calling a function to swap the values */
   swap(a, b)

   fmt.Printf("After swap, value of a : %d\n", a )
   fmt.Printf("After swap, value of b : %d\n", b )
}
func swap(x, y int) int {
   var temp int

   temp = x /* save the value of x */
   x = y    /* put y into x */
   y = temp /* put temp into y */

   return temp;
}

Coloque el código anterior en un solo archivo C y luego compílelo y ejecútelo. Producirá el siguiente resultado:

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :100
After swap, value of b :200

Muestra que no hay cambios en los valores aunque se hayan cambiado dentro de la función.