Fundamentos de Escopo de Função
Parte da seção Fundamentos do Journey de GO da Coddy. Lição 58 de 109.
Em Go, variáveis declaradas dentro de uma função são acessíveis apenas dentro dessa função. Isso é chamado de escopo de função.
Crie uma função com uma variável local:
func calculateTotal(price int, quantity int) int {
tax := 0.1 * float64(price * quantity) // variável local
total := price * quantity + int(tax)
return total
}
func main() {
result := calculateTotal(10, 2)
fmt.Println("Total:", result)
// fmt.Println(tax) // Erro: tax não está acessível aqui
}A saída mostra apenas o valor retornado:
Total: 22A variável tax existe apenas dentro da função calculateTotal e não pode ser acessada a partir de main.
Desafio
InicianteNeste desafio, você praticará a compreensão do escopo de função em Go. Você precisa corrigir um programa simples que possui um problema de escopo.
O programa possui uma variável global message e uma função que tenta modificá-la. Sua tarefa é corrigir o código para que a função atualize corretamente a variável global.
Experimente você mesmo
package main
import "fmt"
// Variável global
var message string = "Hello from global scope"
func updateMessage() {
// Isso cria uma nova variável local em vez de modificar a global
message := "Hello from function scope"
fmt.Println("Inside function:", message)
}
func main() {
fmt.Println("Before function call:", message)
updateMessage()
// TODO: A mensagem global ainda é o valor original
// Modifique a função updateMessage() para alterar a variável global
fmt.Println("After function call:", 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õesPratique por conta própria: Compilador de Go online