Go: punteros como parámetros de función

Go 指针Punteros en Go

Go permite pasar punteros a funciones; solo es necesario definir los parámetros de la función como tipo puntero.

El siguiente ejemplo demuestra cómo pasar punteros a una función y modificar los valores dentro de la función después de la llamada:

Ejemplo

package main

import "fmt"

func main() {
   /* Definir variables locales */
   var a int = 100
   var b int= 200

   fmt.Printf("El valor de a antes del intercambio : %d\n", a )
   fmt.Printf("El valor de b antes del intercambio : %d\n", b )

   /* Llamar a la función para intercambiar valores
* &a apunta a la dirección de la variable a
* &b apunta a la dirección de la variable b
   */

   swap(&a, &b);

   fmt.Printf("El valor de a después del intercambio : %d\n", a )
   fmt.Printf("El valor de b después del intercambio : %d\n", b )
}

func swap(x *int, y *int) {
   var temp int
   temp = *x    /* Guardar el valor de la dirección de x */
   *x = *y      /* Asignar y a x */
   *y = temp    /* Asignar temp a y */
}

El ejemplo anterior produce el siguiente resultado:

交换前 a 的值 : 100
交换前 b 的值 : 200
交换后 a 的值 : 200
交换后 b 的值 : 100

Go 指针Punteros en Go

Otras extensiones