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.

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

Practica por tu cuenta: Compilador de Go online