Sobes.tech
Junior — Middle

Quais ações são permitidas ao trabalhar com um slice em Go se ele não foi explicitamente inicializado?

sobes.tech IA

Resposta da IA

Em Go, se um slice não foi explicitamente inicializado (ou seja, tem o valor nil), pode-se realizar as seguintes ações:

  • Verificar se é nil (por exemplo, if slice == nil), o que é útil para determinar se o slice foi inicializado.
  • Obter o comprimento e a capacidade usando len(slice) e cap(slice). Para um slice nil, o comprimento e a capacidade são 0.
  • Usar o operador append para adicionar elementos. Isso criará automaticamente um novo slice com memória alocada se o slice original for nil.

No entanto, não se pode acessar os elementos do slice por índice se ele for nil ou estiver vazio, pois isso causará um pânico.

Exemplo:

var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s))   // 0
s = append(s, 1)      // agora s está inicializado e contém [1]