Declaración de variables de puntero
Parte de la sección Fundamentos del Journey de GO de Coddy — lección 61 de 109.
En Go, puedes declarar punteros de dos formas principales: usando var con un tipo de puntero o usando el operador de dirección con :=.
Declara un puntero usando var con un tipo de puntero:
func main() {
var x int = 42
var ptr *int // Declara un puntero a un entero
ptr = &x // Asigna la dirección de x a ptr
fmt.Println("Value of x:", x)
fmt.Println("Value of ptr:", ptr)
fmt.Println("Value at ptr:", *ptr)
}La salida muestra que el puntero almacena la dirección de x:
Value of x: 42
Value of ptr: 0xc000018030
Value at ptr: 42También puedes declarar e inicializar un puntero en una sola línea usando :=:
y := 100
ptr := &y // Declarar e inicializar el puntero en un solo pasoDesafío
PrincipianteEn este desafío, practicarás la declaración y el uso de punteros en Go. Ya se ha configurado un puntero para ti, y tu tarea es crear un nuevo puntero que apunte al mismo valor.
Completa el TODO en el código para declarar una nueva variable de puntero llamada 'secondPointer' que apunte a la misma dirección de memoria que el puntero existente.
Hoja de referencia
En Go, puedes declarar punteros usando var con un tipo de puntero o usando el operador de dirección con :=.
Declara un puntero usando var:
var x int = 42
var ptr *int // Declara un puntero a un entero
ptr = &x // Asigna la dirección de x a ptrDeclara e inicializa un puntero en una sola línea usando :=:
y := 100
ptr := &y // Declara e inicializa el puntero en un solo pasoAccede a los valores del puntero:
ptr- la dirección de memoria*ptr- el valor en esa dirección
Pruébalo tú mismo
package main
import "fmt"
func main() {
// Aquí hay una variable y un puntero hacia ella
originalValue := 42
pointerToValue := &originalValue
// TODO: Declara una nueva variable de puntero llamada 'secondPointer'
// que apunte a la misma dirección de memoria que 'pointerToValue'
// No modifiques el código de abajo
fmt.Printf("Original value: %v\n", originalValue)
fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
fmt.Printf("Value through second pointer: %v\n", *secondPointer)
// Cambiemos el valor original y veamos cómo todos los punteros reflejan el cambio
originalValue = 100
fmt.Printf("\nAfter changing original value to 100:\n")
fmt.Printf("Original value: %v\n", originalValue)
fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
fmt.Printf("Value through second pointer: %v\n", *secondPointer)
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores de comparación y lógicos
Operadores de comparación - Parte 1Operadores de comparación - Parte 2Operador lógico ANDOperador lógico OROperador lógico NOTConceptos básicos de precedencia de operadoresResumen: Realizar comparaciones7Flujo de control: Bucles
Explicación del bucle `for`Bucle `for` - BásicoBucle `for` - Solo condiciónLa palabra clave `break`La palabra clave `continue`Bucles anidadosResumen - Repetición de acciones2Variables y tipos de datos básicos
¿Qué es una variable?Inferencia de tipos con `:=`Enteros (int)Números de punto flotanteBooleanosStringsValores ceroConstantesConvenciones de nomenclaturaResumen - Variables y tipos5Entrada y salida básica
Salida con formatoVerbos de formatoImpresión de tiposObtener entrada básica del usuarioResumen: Entrada y salida8Funciones
Comprendiendo las funcionesDeclaración de una funciónLlamada a funcionesParámetros de funciónRetorno de un solo valorRetorno de múltiples valoresValores de retorno con nombreConceptos básicos del alcance de las funcionesResumen: Creando código reutilizable3Operadores básicos
Operadores aritméticosOperador de divisiónEl operador móduloOperador de asignaciónOperadores de asignación compuestaIncremento y decrementoResumen - Cálculos6Flujo de control: Condicionales
La sentencia `if`La palabra clave `else`La palabra clave `else if`Sombreado de variables en `if`Inicialización de variablesLa sentencia `switch``switch` con expresiones`switch` sin expresiónLa palabra clave `fallthrough`Resumen: Toma de decisiones9Punteros
¿Qué es un puntero?Declaración de variables de punteroEl operador de dirección (Address-Of)Desreferenciación de punterosUso de punteros en funcionesPunteros NilResumen: Entendiendo los punteros