Junior — Middle
Pode explicar as diferenças entre os operadores new e make na linguagem Go?
sobes.tech IA
Resposta da IA
Em Go, os operadores new e make servem para alocar memória, mas aplicam-se a tipos diferentes e têm objetivos diferentes:
-
new(T) aloca memória para o tipo T, inicializa-a com o valor zero e devolve um ponteiro *T. É usado para todos os tipos, mas devolve um ponteiro.
-
make(T, args...) é usado apenas para inicializar slices, mapas (map) e canais (chan). Devolve um valor inicializado do tipo T (não um ponteiro).
Exemplo:
p := new(int) // p tem tipo *int, aponta para 0
s := make([]int, 5) // s é um slice de comprimento 5, pronto a usar
m := make(map[string]int) // mapa inicializado
Resumindo:
- new — aloca memória e devolve um ponteiro.
- make — inicializa estruturas de dados complexas e devolve o valor.