Menu
Coddy logo textTech

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: 42

Tambié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 paso
challenge icon

Desafío

Principiante

En 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 ptr

Declara e inicializa un puntero en una sola línea usando :=:

y := 100
ptr := &y    // Declara e inicializa el puntero en un solo paso

Accede 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)
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos