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.