Declarando Variáveis de Ponteiro
Parte da seção Fundamentos do Journey de GO da Coddy — lição 61 de 109.
Em Go, você pode declarar ponteiros de duas formas principais: usando var com um tipo de ponteiro ou usando o operador de endereço com :=.
Declare um ponteiro usando var com um tipo de ponteiro:
func main() {
var x int = 42
var ptr *int // Declara um ponteiro para um inteiro
ptr = &x // Atribui o endereço de x a ptr
fmt.Println("Value of x:", x)
fmt.Println("Value of ptr:", ptr)
fmt.Println("Value at ptr:", *ptr)
}A saída mostra que o ponteiro armazena o endereço de x:
Value of x: 42
Value of ptr: 0xc000018030
Value at ptr: 42Você também pode declarar e inicializar um ponteiro em uma única linha usando :=:
y := 100
ptr := &y // Declara e inicializa o ponteiro em um único passoDesafio
InicianteNeste desafio, você praticará a declaração e o uso de ponteiros em Go. Um ponteiro já está configurado para você, e sua tarefa é criar um novo ponteiro que aponte para o mesmo valor.
Complete o TODO no código para declarar uma nova variável de ponteiro chamada 'secondPointer' que aponte para o mesmo endereço de memória que o ponteiro existente.
Folha de consulta
Em Go, você pode declarar ponteiros usando var com um tipo de ponteiro ou usando o operador de endereço com :=.
Declare um ponteiro usando var:
var x int = 42
var ptr *int // Declare a pointer to an integer
ptr = &x // Assign the address of x to ptrDeclare e inicialize um ponteiro em uma única linha usando :=:
y := 100
ptr := &y // Declare and initialize pointer in one stepAcesse os valores do ponteiro:
ptr- o endereço de memória*ptr- o valor naquele endereço
Experimente você mesmo
package main
import "fmt"
func main() {
// Aqui está uma variável e um ponteiro para ela
originalValue := 42
pointerToValue := &originalValue
// TODO: Declare uma nova variável de ponteiro chamada 'secondPointer'
// que aponta para o mesmo endereço de memória que 'pointerToValue'
// Não modifique o código abaixo
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)
// Vamos alterar o valor original e ver todos os ponteiros refletirem a mudança
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)
}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ões9Ponteiros
O que é um Ponteiro?Declarando Variáveis de PonteiroO Operador de EndereçoDesreferenciando PonteirosUsando Ponteiros em FunçõesPonteiros NilRecapitulação - Entendendo Ponteiros