Slice z make
Lekcja 12 z 21 w kursie Slice’y i mapy w Go w Coddy.
W poprzednich lekcjach tworzyliśmy wycinki za pomocą literałów wycinków. Istnieje jednak inna funkcja o nazwie <strong>make</strong>. Pozwala ona przydzielić tablicę bazową dla wycinka o określonej długości i pojemności. Funkcja taka jak <strong>make</strong> jest potrzebna, ponieważ długość wycinka nie jest z góry określona. Funkcja <strong>make</strong> pozwala więc utworzyć wycinek o określonej długości.
Nie zrozum tego jednak opacznie — jego długość nie staje się stała. Nadal możesz do niego dopisywać elementy.
Składnia funkcji <strong>make</strong> wygląda następująco:
mySlice = make([]string, 4)Wystarczy użyć funkcji <strong>make</strong>. Pierwszy argument (<strong>[]string</strong>) określa typ wycinka, a drugi argument (<strong>4</strong>) informuje funkcję <strong>make</strong> o długości potrzebnej dla naszego wycinka. Drugi argument określa również pojemność tablicy bazowej. Zwrócony wycinek ma więc taką samą długość i pojemność.
Pojawia się teraz pytanie: po co używać funkcji <strong>make</strong> do tworzenia wycinka, skoro możemy po prostu użyć zwykłego literału wycinka?
Odpowiedź jest taka, że w niektórych sytuacjach musimy dodać nowe wartości do wycinka. Jeśli nie ma on wystarczającej pojemności, zostanie utworzona nowa tablica bazowa. Ta operacja jest dość kosztowna pod względem pamięci, ponieważ wymaga ponownej alokacji. Funkcja <strong>make</strong> zapobiega tej ponownej alokacji, z wyprzedzeniem przydzielając miejsce w pamięci.
Za pomocą funkcji <strong>make</strong> możemy określić długość i pojemność za pomocą różnych wartości, tak jak poniżej:
mySlice = make([]string, 4, 6)Ogólnie funkcję <strong>make</strong> można przedstawić w następujący sposób:
Wyzwanie
ŁatwyZa pomocą funkcji <strong>make</strong> utwórz wycinek o nazwie <strong>coddy</strong> o długości 4 i pojemności 5.
- Dodaj wartość "Learn Golang" pod indeksem 0.
- Dodaj wartość "Coddy.tech" pod indeksem 3.
- Iteruj po tym wycinku za pomocą słowa kluczowego
<strong>range</strong>i wyświetl na ekranie indeks oraz wartość .
Spróbuj swoich sił
package main
import "fmt"
func main() {
// Utwórz wycinek coddy za pomocą make
// Dodaj elementy pod indeksami 0 i 3
// Przejdź po elementach wycinka coddy
}Wszystkie lekcje w sekcji Slice’y i mapy w Go
1Wprowadzenie
Wprowadzenie3Slice od kuchni
Slice to tablicaSlice z makeKopiowanie slice’aUsuń elementWyzwanie podsumowujące #1Wyzwanie podsumowujące #2Poćwicz samodzielnie: Kompilator Go online