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ść.