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.
Folha de consulta
Crie ponteiros para structs usando o operador &:
type Person struct {
name string
age int
}
person := Person{name: "Alice", age: 30}
personPtr := &personAcesse e modifique campos de struct através de ponteiros:
// Access fields
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)
// Modify fields
personPtr.age = 31Experimente 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ões