A linguagem Go possui quatro grupos de tipos de dados que são utilizados na linguagem para criação de variáveis, constantes, parâmetros e outros. Abaixo a lista de grupos e posteriormentes suas definições:

Grupos de tipos de dados:
  1. Básicos
  2. Agregados
  3. Referências
  4. Interface
  5. Outros tipos

O uso desses tipos de dados em variáveis e constantes serão visto em Variáves e Constantes. Outros tipos de dados serão vistos em futuras atualizações sobre a biblioteca nativa Go.

Como tipos básicos de dados, a linguagem Go fornece: String, Bool e Number. Esses tipos serão vistos de forma básica nesta seção sendo vistos com mais detalhes em futuras seções.

O tipo Number é compreendido nos tipos informados na tabela abaixo. Os tipos de dados sinalizados, não sinalizados, intervalo de dados foram estudados em Tutorial C e podem ser usados como base.

Tipo Descrição Intervalo
int8 inteiro 8-bits sinalizado -128 a 127
int16 inteiro 16-bit sinalizado -32768 a 32767
int32, int inteiro 32-bit sinalizados -2147483648 a 2147483647
int64 inteiro 64-bit sinalizado -9223372036854775808 a 9223372036854775807
uint8,byte inteiro 8-bits não sinalizado 0 a 255
uint16 inteiro 16-bit não sinalizado 0 a 65535
uint32,uint inteiro 32-bit não sinalizados 0 a 4294967295
uint64 inteiro 64-bit não sinalizado 0 to 18446744073709551615
uintptr tipo de dado não sinalizado -
float32 ponto flutuante de 32-bits -3.4e+38 to 3.4e+38
float64 ponto flutuante de 32-bits -1.7e+308 to +1.7e+308

Os tipos de dados int e uint em plataformas de 64-bits possuem respectivamente um intervalo de dados -9223372036854775808 a 9223372036854775807 e 0 a 18446744073709551615.

A linguagem Go permite a atribuição de valores numéricos em formato hexadecimal, octal e binário como em outras linguagens.

Os tipos bool(Boolean) em Go armazem valores true e false assim como em várias outras linguagens com C++, C# e Java.

Sintaxe
bool
Exemplo
true, false

Os tipos de dados string armazenam sequência de caracteres de texto, justapostos, em seu conteúdo.

Sintaxe
string
Exemplo
"um texto"

Abaixo uma abstração de uma string em memória.

Tab. 1: string
0 1 2 3 4 5
's' 't' 'r' 'i' 'n' 'g'

Em Go uma string é imutável. Em Strings vamos ver mais sobre esse tipo de dado como comparação, cópia e outras operações.

Os tipos de dados derivados, são tipos de dados compostos em outros tipos de dados. A linguagem Go fornece os seguintes tipos de dados:

Tab. 2: Tipos agregados
Tipo Uso Exemplo Seção
Vetor(Array) variáveis 1,2,3,... Vetor
Matriz(Array 2d) matrizes - Matriz
Struct Tipos complexos - Struct
Vetor

O tipo Vetor armazenam dados de forma justaposta. O nome vetor não é palavra reconhecida pela linguagem Go sendo um apelido para o termo array.

Tab. 3: vetor
0 1 2 3 4 5 (...)
0 10 20 30 40 50 ?
Matriz

Uma matriz é um vetor multidimensional(2d) que armazenam dados de forma justaposta. O nome matriz não é palavra reconhecida pela linguagem Go sendo um apelido para o termo array de duas dimensões.

Tab. 4: Matriz
L/C 0 1 2
0 10 20 30
1 40 50 60
2 70 80 90
Struct

O tipo struct é composto de outros tipos primitivos númericos, booleanos , string e outros como seus membros.

Tab. 5: Abstração de Struct
uint8 String float32
1 "tênis" 150,50

A linguagem Go não tem suporte ao tipo de da union presente em linguagens como C e C++.

Os tipos de dados referenciados armazenam endereços de memória. linguagem Go fornece os seguintes tipos de dados:

Tab. 6: Tipos Referenciados
Tipo Exemplo Seção
Ponteiros *p Visitar
Reference &ref Visitar
Slices - Visitar
Map - Visitar
Function - Visitar
Channels - Visitar
Ponteiro

O tipo Ponteiro armazenada endereço de memérios de variáveis funções e outros. O termo Ponteiro não é uma palavra reconhecida pela linguagem Go sendo apelido para o tipo de dado que é declarado utilizando o operador *.

Reference

Um tipo de dado semelhante ao ponteiro, mas não permite aritmética. Esse tipo de dado é declarado utilizando o operador &.

Slice

Um tipo de dados semelhante a um vetor. Mais sobre esse tipo pode ser visto em Slice

Map

Estrutura de dados dinâmica que armazena em seu conteúdo elementos no formato chave-valor. Mais sobre esse tipo pode ser visto em Map

Linguagem Go permite a utilização de interface, conceito trazido de linguagens O.O. Esse tipo de dados armazena em seu corpo apenas assinaturas de métodos que devem ser implementados.

Nesse tipo de dado apenas a assinatura de métodos/funções são declarados que são implementados posteriormente

Sintaxe
type minha_interface interface {
  nome_metodo(<parametros>) tipo_retorno
}

Mais sobre esse tipo de dado pode ser visto em Interface onde vamos aprender a declarar e implementar métodos.

A linguagem Go possui a palavra reservada nil que é utilizado nos tipos de dados de referência como ponteiros, funções e outros para informar que não faz referência a algum recurso de memória.

Sintaxe
nil
  1. 08/09/2025 - revisão 4 - Ajustes: pontuais, target de links e objetivos; Adição: links internos map e slice
  2. 16/09/2024 - revisão 3 - Ajustes gramaticais
  3. 30/08/2024 - revisão 2 - Correção em link tipo nil
  4. 02/10/2023 - revisão 1 - Correção em referências, erros gramaticais
  5. 21/08/2023 - versão inicial