Golang Slice

Golang Slice
W tym artykule zanurzy się głęboko w pracy z plasterkami w języku programowania Go.

Wszyscy znamy tablice, w Go lub w innych językach programowania. Tablica to zbiór elementów powiązanego typu danych (w zależności od). W Go tablice może pomieścić tylko elementy podobnego typu. Tablice mają ustaloną długość i nie mogą rosnąć ani kurczyć się po zdefiniowaniu rozmiaru.

Slice to dynamicznie rozmiar elementów tablicy. Plasterek jest bardzo elastyczny, co pozwala na jego rozmiar. Jednak rozmiar musi pozostać pod pojemnością podstawowej tablicy.

Deklarowanie plasterek

Możemy zadeklarować kawałek za pomocą prostej składni, jak pokazano poniżej:

var slice_name [] dane _type

W powyższej składni zaczynamy od określenia nazwy slice, a następnie parę kwadratowych nawiasów i typu danych dla plasterka.

Zauważysz, że deklaracja plasterek jest bardzo podobna do deklaracji tablicy. Jednak nie określamy rozmiaru dla kawałka.

Utwórz plaster - metoda 1

Istnieją dwie metody tworzenia plasterka w Go. Pierwszym z nich jest użycie dosłownego formatu. Jest to ściśle podobne do tego pokazanego w powyższej składni.

Na przykład poniższy kod tworzy plasterek o nazwie My_Slice:

Pakiet Main
importować „fmt”
funcMain ()
var my_slice = [] int 1, 2, 3, 4, 5, 6
fmt.Println (my_slice)

Powyższy przykład tworzy kawałek typu int z wartościami domyślnymi. Jeśli nie chcesz używać metody Var Deklaracji zmiennej, możesz użyć składni poniżej:

my_slice: = [] int 1,2,3,4,5,6

Powyższa metoda jest znana jako literalna.

Utwórz plaster - metoda 2

Drugą metodą utworzenia plasterek w Go jest użycie funkcji Make.

Składnia jest jak:

Func Make ([] t, len, cap) [] t

Funkcja ma w tym przypadku typ danych, długość i pojemność. Funkcja przydzieli tablicę o rozmiarze określonym przez parametr pojemności. Funkcja zwraca kawałek odwołujący się do tej tablicy.

Aby to zobaczyć w praktyce, patrz poniżej:

slice_var: = make ([] int, 10)
fmt.Println (slice_var)

Ten przykład deklaruje kawałek typu rozmiaru 10 i int. Powstałe wyjście to kawałek 0 wartości.

[0 0 0 0 0 0 0 0 0 0]

Możesz przypisać wartości do plastra za pomocą notacji indeksu.

Aby przypisać wartość w indeksie 1, możemy zrobić:

slice_var [0] = 10
fmt.Println (slice_var)

Powyższy kod powinien zwrócić:

[10 0 0 0 0 0 0 0 0 0]

UWAGA, że element przy indeksie 0 jest aktualizowany, aby odzwierciedlić nową wartość.

Właściwości pokrojone

Istnieją dwie ważne właściwości plasterek, z którymi powinieneś się znać. Długość i pojemność.

Długość wycinka odnosi się do całkowitej liczby elementów posiadanych przez plasterek, podczas gdy pojemność odnosi się do liczby elementów określonych przez tablicę podstawową. Jest to liczone z pierwszego elementu plastra.

Aby uzyskać długość i pojemność plasterek, możesz użyć odpowiednio metod len () i cap ().

Przykład jest, jak pokazano poniżej:

Pakiet Main
importować „fmt”
funcMain ()
varmy_slice = [] int 1, 2, 3, 4, 5, 6
fmt.Println („długość:”, len (my_slice))
fmt.Println („pojemność:”, cap (my_slice))

Powyższy przykładowy kod powinien zwrócić długość i pojemność plastra jako:

Ength: 6
Pojemność: 6

Przejdź krojenie indeksu

Czy wiesz, że możemy utworzyć plaster z istniejących plasterków?

Możemy to osiągnąć, określając wskaźnik związany z niskim i wysokim związkiem. Na przykład, aby utworzyć nowy plasterek z elementami z indeksu 1 do 5:

NEW_SLICE: = MY_SLICE [1: 5]
fmt.Println (New_Slice)
Powstały plasterek staje się:
[2 3 4 5]

Iteracja krocza

Możemy iterować tablicę za pomocą klasyki do pętli.

Na przykład:

Pakiet Main
importować „fmt”
funcMain ()
varmy_slice = [] String „Python”, „JavaScript”, „Go”, „Rust”, „Dart”
fori, item: = rangemy_slice
fmt.Println (i, pozycja)

W powyższym przykładzie używamy pętli i instrukcji Range, aby iterować nad indeksem i elementem plastra. Wynikowe wyjście:

0 Python
1 JavaScript
2 idź
3 Rust
4 Dart

Jeśli nie chcesz używać instrukcji Range, aby zapętlony plasterem, możesz użyć długości plastra jako:

dla i: = 0; I < len(my_slice); i++
fmt.Println (my_slice [i])

Powyższy przykład zwróci podobne dane wyjściowe jak przy użyciu konstrukcji zakresu.

Idź element kopii

Metoda kopiowania pozwala kopiować elementy z jednego kawałka do drugiego. Rozważ poniższy przykład:

funccopy_slice ()
slice_1: = [] int 1, 2, 3, 4, 5
slice_2: = [] int 6, 7, 8, 9, 10
new_slice: = copy (slice_1, slice_2)
fmt.Printf („%Dopitujne elementy”, New_Slice)

Funkcja zwróci całkowitą liczbę skopiowanych elementów.

Wielowymiarowy plasterek

Możesz także stworzyć wielowymiarowy kawałek. Zasadniczo oznacza kawałek plasterków. Przykładem jest jak pokazano:

funcMulti_Slice ()
multi_slice: = [] [] int
1, 2,
3, 4,
5, 6,
7, 8,

fmt.Println (multi_slice)

Powyższy przykład powinien wydrukować wielowymiarowy plasterek jako:

[[1 2] [3 4] [5 6] [7 8]]

Aby uzyskać dostęp do elementów w tablicy wielowymiarowej, możesz użyć indeksów jako:

fmt.Println (multi_slice [0] [0])

Powyższa składnia zwraca pierwszy element w pierwszym plastrze.

Wniosek

Ten przewodnik pomaga w podstawach pracy z plasterkami w Go. Chociaż nie możemy wyczerpać plasterków w zakresie tego samouczka, powinno to zacząć.