Sobes.tech
Junior — Middle

Môžete vysvetliť rozdiely medzi operátormi new a make v jazyku Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go slúžia operátory new a make na alokáciu pamäte, ale používajú sa na rôzne typy a majú rôzne účely:

  • new(T) alokuje pamäť pre typ T, inicializuje ju nulovou hodnotou a vracia ukazovateľ *T. Používa sa pre všetky typy, ale vracia ukazovateľ.

  • make(T, args...) sa používa iba na inicializáciu rezov (slice), máp (map) a kanálov (chan). Vracia inicializovanú hodnotu typu T (nie ukazovateľ).

Príklad:

p := new(int)       // p má typ *int, ukazuje na 0
s := make([]int, 5) // s je rez dĺžky 5, pripravený na použitie
m := make(map[string]int) // inicializovaná mapa

Zhrnutie:

  • new — alokuje pamäť a vracia ukazovateľ.
  • make — inicializuje zložité dátové štruktúry a vracia hodnotu.