The Code Codex
Tema
← Notas / Fundamentos

nota · texto29 set 2024 · 1 min

Variáveis e Constantes

Uma variável é um nome associado a um espaço de memória, com um tipo e um valor que pode mudar. Uma constante é um nome cujo valor é definido uma vez e não muda mais.

Declarando
var count int = 10 // explícito
name := "Douglas" // tipo inferido (só dentro de funções)
const MaxRetries = 3 // constante, resolvida na compilação
int count = 10; // explícito
var name = "Douglas"; // tipo inferido (Java 10+, só variáveis locais)
static final int MAX_RETRIES = 3; // constante (campo da classe)
Valor inicial
  • Go: toda variável nasce com o valor zero do tipo: 0, "", false ou nil. Não existe variável “sem valor”.
  • Java: campos de classe recebem valor padrão (0, false, null), mas uma variável local precisa ser inicializada antes do uso, senão nem compila.
Escopo

Uma variável só existe dentro do bloco ({ }) em que foi declarada. Quanto menor o escopo, mais fácil de entender quem pode alterá-la.

if user, err := find(id); err == nil {
fmt.Println(user) // user e err só existem dentro deste if
}
O que final realmente garante

Em Java, final impede reatribuir a variável, mas não impede alterar o objeto para o qual ela aponta:

final List<String> names = new ArrayList<>();
names.add("Ana"); // permitido: o objeto mudou
names = new ArrayList<>(); // erro de compilação: reatribuição

Para um objeto que não muda de verdade, use tipos imutáveis (List.of(...), records).

Em Go, constantes só podem ser valores conhecidos na compilação (números, strings, booleanos); não existe constante de struct ou de slice.

Veja também: Tipos de dados e Ponteiros.