5 - Variáveis e constantes em Go

Nesta aula vamos aprender dois conceitos fundamentais da programação: variáveis e constantes. Eles serão utilizados praticamente em todos os nossos projetos.

5.1 - Criando variáveis

Uma variável é utilizada para armazenar um valor que pode ser alterado durante a execução do programa.

Podemos criar uma variável utilizando var:

var nome string = "Ralf"
var idade int = 36

Também podemos deixar o Go identificar o tipo automaticamente:

var nome = "Ralf"
var idade = 36

E, dentro de uma função, podemos utilizar uma forma ainda mais curta:

nome := "Ralf"
idade := 36

Depois de criada, uma variável pode receber outro valor:

idade := 36

idade = 31

Lembre-se: := é utilizado para criar uma nova variável, enquanto = é utilizado para atribuir um novo valor a uma variável existente.

5.2 - Tipos de dados

Go possui diversos tipos de dados. Abaixo temos os tipos predefinidos mais importantes da linguagem:

Categoria Tipo Utilização Exemplo
Booleano bool Verdadeiro ou falso true
any Alias para interface{}, podendo representar qualquer valor any
Inteiros com sinal int Número inteiro 10
int8 Inteiro de 8 bits 100
int16 Inteiro de 16 bits 1000
int32 Inteiro de 32 bits 100000
int64 Inteiro de 64 bits 1000000000
Inteiros sem sinal uint Inteiro sem valores negativos 10
uint8 Inteiro sem sinal de 8 bits 255
uint16 Inteiro sem sinal de 16 bits 1000
uint32 Inteiro sem sinal de 32 bits 100000
uint64 Inteiro sem sinal de 64 bits 1000000000
Inteiro sem sinal uintptr Inteiro grande o suficiente para armazenar um endereço de memória uintptr(0)
Decimais float32 Número decimal de 32 bits 10.5
float64 Número decimal de 64 bits 10.5
Complexos complex64 Número complexo 1 + 2i
complex128 Número complexo com maior precisão 1 + 2i
Texto string Sequência de caracteres "Olá"
Unicode rune Alias para int32, utilizado frequentemente para caracteres Unicode 'A'
Byte byte Alias para uint8 255

Observação: byte e rune são aliases para outros tipos. byte é equivalente a uint8 e rune é equivalente a int32.

Também encontramos tipos compostos, como array, slice, map, struct, pointer, function, interface e channel. Eles serão apresentados ao longo do treinamento, conforme aprendermos cada conceito.

5.3 - Criando constantes

Uma constante é semelhante a uma variável, porém seu valor não pode ser alterado depois de definido.

Para criar uma constante utilizamos a palavra-chave const:

const linguagem = "Go"
const pi = 3.14159

Também podemos informar o tipo:

const idade int = 30

Se tentarmos alterar uma constante, teremos um erro:

const linguagem = "Go"

linguagem = "Java"

Isso acontece porque constantes não podem receber novos valores.

5.4 - Variável ou constante?

Uma maneira simples de decidir entre as duas é pensar se o valor poderá mudar:

  • Variável: quando o valor pode ser alterado.
  • Constante: quando o valor não deve ser alterado.
var idade = 36

idade = 31

const linguagem = "Go"

Nesse exemplo, idade é uma variável porque pode mudar, enquanto linguagem é uma constante.

5.5 - Praticando

Vamos colocar o que aprendemos em prática:

package main

import "fmt"

func main() {
    nome := "Ralf"
    idade := 36
    altura := 1.78
    estudando := true

    const linguagem = "Go"

    fmt.Println("Nome:", nome)
    fmt.Println("Idade:", idade)
    fmt.Println("Altura:", altura)
    fmt.Println("Estudando:", estudando)
    fmt.Println("Linguagem:", linguagem)
}

Experimente alterar os valores das variáveis e executar o programa novamente.

Você pode acompanhar cada etapa descrita acima no vídeo a seguir: