Vai - Chiama per valore

Il call by valueIl metodo per passare argomenti a una funzione copia il valore effettivo di un argomento nel parametro formale della funzione. In questo caso, le modifiche apportate al parametro all'interno della funzione non hanno effetto sull'argomento.

Per impostazione predefinita, il linguaggio di programmazione Go utilizza il metodo call by value per passare gli argomenti. In generale, ciò significa che il codice all'interno di una funzione non può alterare gli argomenti utilizzati per chiamare la funzione. Considera la funzioneswap() definizione come segue.

/* 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;
}

Ora, chiamiamo la funzione swap() passando i valori effettivi come nell'esempio seguente:

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;
}

Metti il ​​codice sopra in un singolo file C, quindi compila ed eseguilo. Produrrà il seguente risultato:

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

Mostra che non vi è alcun cambiamento nei valori anche se sono stati modificati all'interno della funzione.