Junior — Middle
Czy możesz wyjaśnić mechanizmy działania funkcji Make?
sobes.tech AI
Odpowiedź od AI
W Go funkcja make służy do tworzenia i inicjalizacji tablic (slice), map (słowników) i kanałów (channel). Przydziela pamięć i zwraca zainicjalizowany obiekt odpowiedniego typu.
Wewnątrz, make:
- Przydziela pamięć dla struktury danych i wewnętrznych buforów.
- Inicjalizuje pola serwisowe (np. długość i pojemność tablicy).
- Dla tablic (slice), przydziela tablicę o zadanej pojemności, zwracając tablicę z określoną długością i pojemnością.
- Dla map, tworzy tablicę mieszającą z początkowym rozmiarem.
- Dla kanałów, tworzy bufor o wskazanej pojemności.
Przykład:
s := make([]int, 5, 10) // tablica o długości 5, pojemności 10
m := make(map[string]int, 10) // mapa z początkową pojemnością 10
ch := make(chan int, 5) // kanał z buforem na 5 elementów
W ten sposób, make jest wbudowanym mechanizmem do tworzenia i inicjalizacji złożonych typów danych, różnym od new, który jedynie przydziela pamięć bez inicjalizacji.