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: 20Finalmente, 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: 10Isso 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.
Desafio
InicianteNeste 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)
}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