Sobes.tech
Junior — Middle

Meg tudná magyarázni a new és make operátorok közötti különbségeket a Go nyelvben?

sobes.tech MI

Válasz az MI-től

Go nyelvben a new és make operátorok memória foglalására szolgálnak, de különböző típusokra alkalmazhatók, és különböző célokat szolgálnak:

  • new(T) memória foglalására szolgál a T típus számára, null értékkel inicializálja, és egy *T mutatót ad vissza. Minden típushoz használható, de mutatót ad vissza.

  • make(T, args...) csak szeletek, térképek (map) és csatornák (chan) inicializálására szolgál. Egy inicializált T típusú értéket ad vissza (nem mutatót).

Példa:

p := new(int)       // p *int típusú, 0-ra mutat
s := make([]int, 5) // s egy 5 hosszú szelet, készen áll a használatra
m := make(map[string]int) // inicializált térkép

Összefoglalva:

  • new — memória foglalást végez és mutatót ad vissza.
  • make — összetett adatszerkezeteket inicializál és az értéket adja vissza.