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.

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 para armazenar ponteiro - -
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 utilizando a notação (0x) assim 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#, Java e outros.

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
"string"

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:
Os tipos Vetor armazenam dados de forma justaposta. O nome vetor não é palavras reconhecidas 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 é uma vetor multidimensional(2d) que armazenam dados de forma justaposta. O nome matriz não é palavras reconhecidas pela linguagem Go sendo um apelido para o termo array multidimensional.

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

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 apelidos 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ânima 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 não foi iniciado ou não é mais referenciado.

Sintaxe
nil
  1. 16/09/2024 - revisão 3 - Ajustes gramaticais
  2. 30/08/2024 - revisão 2 - Correção em link tipo nil
  3. 02/10/2023 - revisão 1 - Correção em referências, erros gramaticais
  4. 21/08/2023 - versão inicial