Menu
Coddy logo textTech

Punteros a Structs

Parte de la sección Fundamentos del Journey de GO de Coddy — lección 97 de 109.

Al trabajar con structs, puedes crear punteros a ellos al igual que con otros tipos. Esto es útil para pasar structs grandes de manera eficiente.

Define una estructura Person y crea un puntero hacia ella:

type Person struct {
    name string
    age  int
}

func main() {
    person := Person{name: "Alice", age: 30}
    
    // Create a pointer to the struct
    personPtr := &person
    
    // Access fields through pointer
    fmt.Println(personPtr.name)
    fmt.Println(personPtr.age)
}

La salida muestra que podemos acceder a los campos a través del puntero:

Alice
30

También puedes modificar campos a través del puntero:

personPtr.age = 31
fmt.Println(person.age)  // Imprime: 31
challenge icon

Desafío

Principiante

En este desafío, practicarás el trabajo con punteros a estructuras en Go. Tienes una estructura Person con los campos name y age. Tu tarea es actualizar la información de la persona utilizando un puntero a la estructura.

El código ya crea una estructura Person y un puntero a ella. Debes modificar la información de la persona a través del puntero.

Hoja de referencia

Crea punteros a estructuras usando el operador &:

type Person struct {
    name string
    age  int
}

person := Person{name: "Alice", age: 30}
personPtr := &person

Accede y modifica campos de estructuras a través de punteros:

// Acceder a los campos
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)

// Modificar los campos
personPtr.age = 31

Pruébalo tú mismo

package main

import "fmt"

// Estructura Person con campos de nombre y edad
type Person struct {
	name string
	age  int
}

func main() {
	// Crear una estructura Person
	person := Person{
		name: "John",
		age:  25,
	}

	// Crear un puntero a la estructura Person
	personPtr := &person

	// Imprimir la información original de la persona
	fmt.Println("Original person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)

	// TODO: Usar el puntero para cambiar el nombre de la persona a "Jane" y la edad a 30
	// Sugerencia: Puedes acceder a los campos de la estructura a través de un puntero usando la notación de punto
	

	// Imprimir la información actualizada de la persona
	fmt.Println("Updated person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}
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