Menu
Coddy logo textTech

Sombreamento de Variáveis no `if`

Parte da seção Fundamentos do Journey de GO da Coddy — lição 37 de 109.

Vamos aprender sobre o sombreamento de variáveis em instruções if. Isso permite que você crie uma variável que existe apenas dentro do bloco if e de seus blocos else relacionados.

Primeiro, vamos criar uma variável fora da nossa instrução condicional:

x := 10
fmt.Println("Original x value:", x)

Após executar este código, teremos uma variável x com o valor 10 que podemos usar em todo o nosso programa.

Agora, vamos usar o sombreamento de variável (variable shadowing) em uma instrução if para criar uma nova variável que existe apenas dentro desse bloco:

if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
    // y existe apenas neste bloco
} else {
    fmt.Println("y is not greater than 15:", y)
    // y também está disponível em blocos else
}

Após executar este código, o Go calculará y como 20 (que é x * 2), verificará se é maior que 15 e, em seguida, executará o primeiro bloco. A saída aparecerá na tela:

y is greater than 15: 20

Finalmente, vamos tentar acessar nossas variáveis após a instrução if:

// fmt.Println(y) causaria um erro - y não existe aqui
fmt.Println("x is still:", x)

Após executar este código, ainda podemos acessar x, mas y não está mais disponível porque ele existia apenas dentro dos blocos if e else. A saída mostrará na tela:

x is still: 10

Isso demonstra como o sombreamento de variáveis funciona em instruções if - a variável y só é acessível dentro dos blocos condicionais onde foi declarada.

challenge icon

Desafio

Iniciante

Neste desafio, você praticará o sombreamento de variáveis (variable shadowing) em uma instrução if. Você verá como uma variável declarada dentro de um bloco if pode ter o mesmo nome de uma variável no escopo externo, mas com um valor diferente.

O código possui uma variável message no escopo externo. Sua tarefa é criar uma variável sombreada com o mesmo nome dentro do bloco if e, em seguida, imprimir ambas as variáveis para ver o efeito de sombreamento.

Folha de consulta

O sombreamento de variáveis (variable shadowing) em instruções if permite criar variáveis que existem apenas dentro do bloco condicional e seus blocos else relacionados.

Sintaxe para sombreamento de variáveis em instruções if:

if variable := expression; condition {
    // variable existe apenas neste bloco
} else {
    // variable também está disponível em blocos else
}

Exemplo:

x := 10
if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
} else {
    fmt.Println("y is not greater than 15:", y)
}
// y não está mais acessível aqui
fmt.Println("x is still:", x)

A variável sombreada é acessível apenas dentro dos blocos if e else onde foi declarada, não fora deles.

Experimente você mesmo

package main

import "fmt"

func main() {
	// Variável do escopo externo
	message := "Hello from outer scope"
	
	isLoggedIn := true
	
	if isLoggedIn {
		// TODO: Crie uma nova variável chamada 'message' com o valor "Hello from inner scope"
		
		// Isso imprime a mensagem do escopo interno
		fmt.Println(message)
	}
	
	// Isso imprime a mensagem do escopo externo
	fmt.Println(message)
}
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