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ícitoname := "Douglas" // tipo inferido (só dentro de funções)const MaxRetries = 3 // constante, resolvida na compilaçãoint count = 10; // explícitovar 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,"",falseounil. 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 mudounames = new ArrayList<>(); // erro de compilação: reatribuiçãoPara 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.