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.

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

Pratique por conta própria: Compilador de Go online