DEV Community

Cover image for Arrays e Slices em go
Maycon Jesus
Maycon Jesus

Posted on • Edited on

Arrays e Slices em go

Arrays (Tamanho Fixo)

Em Go, arrays têm tamanho fixo, ou seja, o número de elementos não pode ser alterado depois que o array é criado.

Exemplo de Array com Tamanho Fixo:

var sites [4]string
Enter fullscreen mode Exit fullscreen mode
  • O array sites pode armazenar exatamente 4 elementos do tipo string.
  • O tamanho do array é uma parte de seu tipo, então arrays com diferentes tamanhos são considerados tipos diferentes.

Slices (Tamanho Dinâmico)

Diferente dos arrays, slices podem ter tamanho variável e são mais flexíveis. Eles são usados com mais frequência devido à sua capacidade de crescer e diminuir dinamicamente.

Exemplo de Slice (Tamanho Dinâmico):

var sites []string
Enter fullscreen mode Exit fullscreen mode
  • sites é um slice de string, sem um tamanho fixo, que pode ser redimensionado conforme necessário.
  • Diferente dos arrays, slices não são definidos com um número fixo entre os colchetes.

Inicializando Arrays e Slices com Itens

Inicializando Arrays com Tamanho Fixo:

Quando você inicializa um array com valores, o tamanho deve ser explicitamente definido.

var strs = [2]string{"aaa", "bbb"}
Enter fullscreen mode Exit fullscreen mode
  • Aqui, o array strs tem exatamente 2 elementos do tipo string.

Inicializando Slices com Tamanho Dinâmico:

Slices podem ser inicializados sem precisar especificar um tamanho fixo entre os colchetes.

var strs = []string{"aaa", "bbb"}
Enter fullscreen mode Exit fullscreen mode
  • Neste caso, strs é um slice de string com dois elementos, mas o número de elementos pode crescer ou diminuir ao longo do tempo.

Métodos Importantes

1. append()

O método append() é usado para adicionar elementos a um slice. Se o slice atingir sua capacidade máxima, o append() automaticamente cria um novo slice com maior capacidade.

Exemplo de uso de append:

var strs = []string{"aaa", "bbb"}
strs = append(strs, "ccc", "ddd")
fmt.Println(strs) // Saída: [aaa bbb ccc ddd]
Enter fullscreen mode Exit fullscreen mode
  • Aqui, dois novos elementos são adicionados ao slice strs. O slice cresce dinamicamente conforme necessário.
  • A função append() sempre retorna um novo slice, pois o slice original pode ter sua capacidade aumentada.

2. len()

O método len() retorna o número de elementos no slice (ou array).

Exemplo de uso de len:

var strs = []string{"aaa", "bbb", "ccc"}
fmt.Println(len(strs)) // Saída: 3
Enter fullscreen mode Exit fullscreen mode
  • O len(strs) retorna 3, que é o número de elementos atualmente no slice strs.

3. cap()

O método cap() retorna a capacidade total do slice, ou seja, o número de elementos que ele pode armazenar antes de precisar ser realocado.

Exemplo de uso de cap:

var strs = []string{"aaa", "bbb"}
fmt.Println(cap(strs)) // Saída: 2 (dependendo do tamanho inicial do slice)
Enter fullscreen mode Exit fullscreen mode
  • A função cap(strs) retorna a capacidade do slice strs, que pode ser diferente do número de elementos (retornado por len()).
  • Em um slice, a capacidade pode ser maior que o número de elementos, permitindo que o slice cresça sem realocações imediatas.

Diferenças Principais

  • Arrays: Têm tamanho fixo e o tamanho é parte do tipo.
  • Slices: Têm tamanho dinâmico e são mais flexíveis para o uso diário em Go. Slices podem crescer conforme necessário usando o método append().

Resumo de Funções

  • append(slice, elements...): Adiciona elementos ao slice.
  • len(slice): Retorna o número de elementos no slice.
  • cap(slice): Retorna a capacidade do slice.

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post

Top comments (0)

AWS Q Developer image

Your AI Code Assistant

Generate and update README files, create data-flow diagrams, and keep your project fully documented. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE