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:
- Declaração de um slice sem inicialização (slice nulo):
var s []int // slice nulo, comprimento e capacidade 0
- Inicialização de um slice usando um literal:
s := []int{1, 2, 3} // slice de comprimento 3
- 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.
- 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.