Nesta aula vamos aprender dois conceitos fundamentais da programação: variáveis e constantes. Eles serão utilizados praticamente em todos os nossos projetos.
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.
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.
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.
Uma maneira simples de decidir entre as duas é pensar se o valor poderá mudar:
var idade = 36
idade = 31
const linguagem = "Go"
Nesse exemplo, idade é uma variável porque pode mudar, enquanto linguagem é uma constante.
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: