Go: punteros como parámetros de función
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 */
}
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 的值 : 100Otras extensiones
Punteros en Go