Sobes.tech
Junior — Middle

Czy możesz wyjaśnić różnice między operatorami new i make w języku Go?

sobes.tech AI

Odpowiedź od AI

W Go operatory new i make służą do alokacji pamięci, ale są stosowane do różnych typów i mają różne cele:

  • new(T) alokuje pamięć dla typu T, inicjalizuje ją wartością zerową i zwraca wskaźnik *T. Używane dla wszystkich typów, ale zwraca wskaźnik.

  • make(T, args...) jest używane tylko do inicjalizacji slices, map (słowników) i kanałów (chan). Zwraca zainicjalizowaną wartość typu T (nie wskaźnik).

Przykład:

p := new(int)       // p ma typ *int, wskazuje na 0
s := make([]int, 5) // s to slice o długości 5, gotowy do użycia
m := make(map[string]int) // zainicjalizowana mapa

Podsumowując:

  • new — alokuje pamięć i zwraca wskaźnik.
  • make — inicjalizuje złożone struktury danych i zwraca wartość.