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)ecap(slice). Para um slicenil, o comprimento e a capacidade são 0. - Usar o operador
appendpara adicionar elementos. Isso criará automaticamente um novo slice com memória alocada se o slice original fornil.
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]