Sobes.tech
Junior — Middle

Como criar e inicializar corretamente slices em Go?

sobes.tech IA

Resposta da IA

Em Go, os slices são estruturas de dados dinâmicas que representam uma referência a um array com um comprimento e capacidade especificados.

Podem ser criados e inicializados slices de várias formas:

  1. Declaração de um slice sem inicialização (slice nulo):
var s []int // slice nulo, comprimento e capacidade 0
  1. Inicialização de um slice usando um literal:
s := []int{1, 2, 3} // slice de comprimento 3
  1. Criação de um slice usando a função make:
s := make([]int, 5) // slice de comprimento 5, preenchido com zeros
s2 := make([]int, 3, 10) // comprimento 3, capacidade 10

A função make aloca um array por trás dos panos e retorna um slice que aponta para ele.

  1. Criação de um slice a partir de um array:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // slice dos elementos com índices 1,2,3

É importante lembrar que slices são referências a arrays, portanto, modificar elementos do slice também modifica o array original.

Exemplo de uso:

package main
import "fmt"

func main() {
    s := make([]int, 3, 5)
    fmt.Println(s)       // [0 0 0]
    fmt.Println(len(s))  // 3
    fmt.Println(cap(s))  // 5

    s = append(s, 4, 5)
    fmt.Println(s)       // [0 0 0 4 5]
    fmt.Println(len(s))  // 5
    fmt.Println(cap(s))  // 5
}

Este método permite trabalhar de forma eficiente com arrays dinâmicos em Go.