Tipos de Dados do Go
Abaixo estão listados todos os tipos incorporados na linguagem Go, para referência, mais detalhes podem ser encontrados no Manual de Referência - Tipos.
Tipo Booleano
O tipo booleano tem apenas valor verdadeiro e valor falso.
| Tipo | Descrição |
|---|---|
bool | true é valor verdadeiro, false é valor falso |
TIP
Em Go, o inteiro 0 não representa valor falso, e inteiros não-nulos também não representam valor verdadeiro, ou seja, números não podem substituir valores booleanos em julgamentos lógicos, os dois são tipos completamente diferentes.
Tipo Inteiro
Em Go, diferentes tipos são alocados para inteiros de diferentes tamanhos de bits, principalmente divididos em inteiros sem sinal e inteiros com sinal.
| Número | Tipo e Descrição |
|---|---|
uint8 | Inteiro sem sinal de 8 bits |
uint16 | Inteiro sem sinal de 16 bits |
uint32 | Inteiro sem sinal de 32 bits |
uint64 | Inteiro sem sinal de 64 bits |
int8 | Inteiro com sinal de 8 bits |
int16 | Inteiro com sinal de 16 bits |
int32 | Inteiro com sinal de 32 bits |
int64 | Inteiro com sinal de 64 bits |
uint | Inteiro sem sinal, pelo menos 32 bits |
int | Inteiro, pelo menos 32 bits |
uintptr | Equivalente ao inteiro sem sinal de 64 bits, mas especializado para armazenar operações de ponteiro, usado para armazenar endereços de ponteiro imutáveis. |
Tipo Ponto Flutuante
Números de ponto flutuante IEEE-754, principalmente divididos em números de ponto flutuante de precisão simples e números de ponto flutuante de precisão dupla.
| Tipo | Tipo e Descrição |
|---|---|
float32 | Número de ponto flutuante IEEE-754 de 32 bits |
float64 | Número de ponto flutuante IEEE-754 de 64 bits |
Tipo Número Complexo
| Tipo | Descrição |
|---|---|
complex128 | Números reais e imaginários de 64 bits |
complex64 | Números reais e imaginários de 32 bits |
Tipo Caractere
A linguagem Go é totalmente compatível com strings UTF-8
| Tipo | Descrição |
|---|---|
byte | Equivalente a uint8, pode expressar caracteres ASCII |
rune | Equivalente a int32, pode expressar caracteres Unicode |
string | String é uma sequência de bytes, pode ser convertida para o tipo []byte, ou seja, slice de bytes |
Tipos Derivados
| Tipo | Exemplo |
|---|---|
| Array | [5]int, array de inteiros com comprimento 5 |
| Slice | []float64, slice de números de ponto flutuante de 64 bits |
| Mapa | map[string]int, mapa com chave do tipo string e valor do tipo inteiro |
| Struct | type Gopher struct{}, struct Gopher |
| Ponteiro | *int, um ponteiro de inteiro. |
| Função | type f func(), um tipo de função sem parâmetros e sem valor de retorno |
| Interface | type Gopher interface{}, interface Gopher |
| Canal | chan int, canal de inteiros |
Valor Zero
Na documentação oficial o valor zero é chamado de zero value, o valor zero não é apenas o número zero literalmente, mas sim um valor vazio ou valor padrão de um tipo.
| Tipo | Valor Zero |
|---|---|
| Tipos numéricos | 0 |
| Tipo booleano | false |
| Tipo string | "" |
| Array | Coleção de valores zero dos tipos correspondentes com comprimento fixo |
| Struct | Struct com todos os campos internos como valores zero |
| Slice, mapa, função, interface, canal, ponteiro | nil |
nil
nil é semelhante a none ou null em outras linguagens, mas não é equivalente. nil é apenas o valor zero de alguns tipos de referência, e não pertence a nenhum tipo, pode-se ver pelo código fonte que nil é apenas uma variável.
var nil TypeE uma instrução como nil == nil não pode compilar.
