English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En el lenguaje de programación Go, un puntero es una variable que almacena la dirección de memoria de otra variable. Un puntero es una variable especial, por lo que puede apuntar a cualquier tipo de variable. Básicamente, parece una cadena de punteros. Cuando definimos un puntero a puntero, el primer puntero se utiliza para almacenar la dirección del segundo puntero. Este concepto a veces se llamaPunteros dobles.
¿Cómo declarar un puntero a puntero en Golang?
declarar un puntero como Pointer, al igual que se declara un puntero en Go. La diferencia es que debemos poner un 'adicional antes del nombre del puntero * Normalmente, cuando usamosvar clavey la declaración de tipo de puntero variable se puede completar
Vamos a realizar algunos cambios en el programa anterior. Asignamos nuevos valores a los punteros utilizando la desreferencia, como se muestra a continuación:1El valor en la dirección deEn el siguiente programa, el punteropt2almacenadopt1Desreferenciapt2La dirección del puntero* pt2esvel valor dept1si intenta la dirección, o también se puede decir** pt2,Entonces se dará el valor de la variableves el valor de100.
Un programa de Go para explicar el concepto de puntero a puntero package main import \ //Variable de tipo entero var V int = 100 //Obtener un puntero //de tipo entero var pt1 *int = &V //int = &v //Obtener el puntero apuntado1Puntero a pt //Almacenar la dirección de puntero de pt1convertido a pt2 var pt2 **int = &pt1 fmt.Println("El valor de la variable V es = ", V) fmt.Println("La dirección de la variable V es = ", &V) fmt.Println("pt1su valor es = ", pt1) fmt.Println("pt1su dirección es = ", &pt1) fmt.Println("pt2su valor es = ", pt2) //Desreferencia //puntero a puntero fmt.Println("pt2El valor en la dirección de*pt2) = ", *pt2) //Los punteros dobles darán el valor de V fmt.Println("*(pt2) o **pt2 =", **pt2) }
Salida:
El valor de la variable V es = 100 La dirección de la variable V es = 0xc000062090 pt1es = 0xc000062090 pt1La dirección es = 0xc00008c018 pt2es = 0xc00008c018 pt2El valor en la dirección de*pt2) = 0xc000062090 *(pt2) o **pt2 = 100
Vamos a realizar algunos cambios en el programa anterior. Asignamos nuevos valores a los punteros utilizando la desreferencia, como se muestra a continuación:2El valor en la dirección de:
// Ejemplo Un programa de Go para explicar el concepto de puntero a puntero package main import \ // func main() { Definir una variable de tipo int 100 // var v int = var pt1 *Un puntero de tipo entero //int = &v //Obtener el puntero apuntado1Puntero a pt //Almacenar la dirección de puntero de pt1convertido a pt2 var pt2 **int = &pt1 fmt.Println("El valor de la variable v es = ", v) //para cambiar el valor de v mediante asignación //El puntero pt1nuevo valor *pt1 = 200 fmt.Println("Cambiar pt1El valor almacenado en v es = ", v) //para cambiar el valor de v mediante asignación //El puntero pt2nuevo valor **pt2 = 300 fmt.Println("Cambiar pt2El valor almacenado en v es = ", v) }
Salida:
El valor de la variable v es 100 Cambiar pt1El valor almacenado en v es 200 Cambiar pt2El valor almacenado en v es 300
Conocimientos relacionados:Puntero de Go