Punteros a una función en Go

Requisito previo: Punteros en Go

Los punteros en el lenguaje de programación Go o Golang es una variable que se utiliza para almacenar la dirección de memoria de otra variable. También puede pasar los punteros a la función como las variables . Hay dos maneras de hacer esto de la siguiente manera:

Cree un puntero y simplemente páselo a la Función

En el siguiente programa, estamos tomando una función ptf que tiene un parámetro de puntero de tipo entero que indica a la función que acepte solo el argumento de tipo de puntero. Básicamente, esta función cambiaba el valor de la variable x . Al principio x contiene el valor 100. Pero después de la llamada a la función, el valor cambió a 748 como se muestra en la salida. 

Go

// Go program to create a pointer
// and passing it to the function
package main
 
import "fmt"
 
// taking a function with integer
// type pointer as an parameter
func ptf(a *int) {
 
    // dereferencing
    *a = 748
}
 
// Main function
func main() {
 
    // taking a normal variable
    var x = 100
 
        fmt.Printf("The value of x before function call is: %d\n", x)
 
    // taking a pointer variable
    // and assigning the address
    // of x to it
    var pa *int = &x
 
    // calling the function by
    // passing pointer to function
    ptf(pa)
 
    fmt.Printf("The value of x after function call is: %d\n", x)
 
}

Producción:

The value of x before function call is: 100
The value of x after function call is: 748

Pasar una dirección de la variable a la llamada de función

Teniendo en cuenta el programa a continuación, no estamos creando un puntero para almacenar la dirección de la variable x , es decir, como pa en el programa anterior. Estamos pasando directamente la dirección de x a la llamada de función que funciona como el método discutido anteriormente. 

Go

// Go program to create a pointer
// and passing the address of the
// variable to the function
package main
 
import "fmt"
 
// taking a function with integer
// type pointer as an parameter
func ptf(a *int) {
 
    // dereferencing
    *a = 748
}
 
// Main function
func main() {
 
    // taking a normal variable
    var x = 100
     
    fmt.Printf("The value of x before function call is: %d\n", x)
 
    // calling the function by
    // passing the address of
    // the variable x
    ptf(&x)
 
    fmt.Printf("The value of x after function call is: %d\n", x)
 
}

Producción:

The value of x before function call is: 100
The value of x after function call is: 748

Nota: También puede usar el operador de declaración breve (:=) para declarar las variables y punteros en los programas anteriores.
 

Publicación traducida automáticamente

Artículo escrito por Anshul_Aggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *