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
30Você também pode modificar campos através do ponteiro:
personPtr.age = 31
fmt.Println(person.age) // Imprime: 31Desafio
InicianteNeste 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.
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)
}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
4Operadores de Comparação e Lógicos
Operadores de Comparação - Parte 1Operadores de Comparação - Parte 2Operador Lógico ANDOperador Lógico OROperador Lógico NOTFundamentos de Precedência de OperadoresRecapitulação - Fazendo Comparações7Fluxo de Controle: Loops
O Loop `for` ExplicadoLoop For - BásicoLoop For - Apenas CondiçãoA Palavra-chave `break`A Palavra-chave `continue`Loops AninhadosRecapitulação - Repetindo Ações2Variáveis e Tipos de Dados Básicos
O que é uma variávelInferência de Tipo com `:=`Inteiros (int)Números de Ponto FlutuanteBooleanosStringsValores ZeroConstantesConvenções de NomenclaturaRecapitulação - Variáveis e Tipos5Entrada/Saída Básica
Saída FormatadaVerbos de FormataçãoImprimindo TiposObtendo Entrada Básica do UsuárioRecapitulação - Entrada e Saída8Funções
Entendendo FunçõesDeclarando uma FunçãoChamando FunçõesParâmetros de FunçãoRetornando um Único ValorRetornando Múltiplos ValoresValores de Retorno NomeadosFundamentos de Escopo de FunçãoRecapitulação - Criando Código Reutilizável3Operadores Básicos
Operadores AritméticosOperador de DivisãoO Operador MóduloOperador de AtribuiçãoOperadores de Atribuição CompostaIncremento e DecrementoRecapitulação - Cálculos6Fluxo de Controle: Condicionais
A Instrução `if`A Palavra-chave `else`A Palavra-chave `else if`Sombreamento de Variáveis no `if`Inicializando VariáveisA Instrução `switch`Switch com ExpressõesSwitch sem ExpressãoA Palavra-chave `fallthrough`Recapitulação - Tomando DecisõesPratique por conta própria: Compilador de Go online