Sobes.tech
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.