Menu
Coddy logo textTech

Ponteiros para Structs

Parte da seção Fundamentos do Journey de GO da Coddy — lição 97 de 109.

Ao trabalhar com structs, você pode criar ponteiros para elas assim como com outros tipos. Isso é útil para passar structs grandes de forma eficiente.

Defina uma struct Person e crie um ponteiro para ela:

type Person struct {
    name string
    age  int
}

func main() {
    person := Person{name: "Alice", age: 30}
    
    // Cria um ponteiro para a struct
    personPtr := &person
    
    // Acessa campos através do ponteiro
    fmt.Println(personPtr.name)
    fmt.Println(personPtr.age)
}

A saída mostra que podemos acessar campos através do ponteiro:

Alice
30

Você também pode modificar campos através do ponteiro:

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

Desafio

Iniciante

Neste desafio, você praticará o trabalho com ponteiros para structs em Go. Você tem uma struct Person com os campos name e age. Sua tarefa é atualizar as informações da pessoa usando um ponteiro para a struct.

O código já cria uma struct Person e um ponteiro para ela. Você precisa modificar as informações da pessoa através do ponteiro.

Folha de consulta

Crie ponteiros para structs usando o operador &:

type Person struct {
    name string
    age  int
}

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

Acesse e modifique campos de struct através de ponteiros:

// Access fields
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)

// Modify fields
personPtr.age = 31

Experimente você mesmo

package main

import "fmt"

// Estrutura Person com os campos name e age
type Person struct {
	name string
	age  int
}

func main() {
	// Cria uma estrutura Person
	person := Person{
		name: "John",
		age:  25,
	}

	// Cria um ponteiro para a estrutura Person
	personPtr := &person

	// Imprime as informações originais da pessoa
	fmt.Println("Original person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)

	// TODO: Use o ponteiro para alterar o nome da pessoa para "Jane" e a idade para 30
	// Dica: Você pode acessar campos de uma estrutura através de um ponteiro usando a notação de ponto
	

	// Imprime as informações atualizadas da pessoa
	fmt.Println("Updated person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos