Menu
Coddy logo textTech

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: 42

Você 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 passo
challenge icon

Desafio

Iniciante

Neste 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 ptr

Declare e inicialize um ponteiro em uma única linha usando :=:

y := 100
ptr := &y    // Declare and initialize pointer in one step

Acesse 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)
}
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