Golang -skive

Golang -skive
Denne artikkelen vil dykke dypt inn i å jobbe med skiver i Go -programmeringsspråket.

Vi er alle kjent med matriser, enten i Go eller på andre programmeringsspråk. En matrise er en samling av elementer av en relatert datatype (avhengig). I Go kan en matrise bare holde elementer av en lignende type. Arrays har en fast lengde og kan ikke vokse eller krympe når størrelsen er definert.

En skive er et syn på dynamisk størrelse på elementene i en matrise. En skive er veldig fleksibel, slik at du kan endre størrelse på den. Størrelsen må imidlertid forbli under kapasiteten til den underliggende matrisen.

Erklærer en skive

Vi kan erklære en skive ved hjelp av en enkel syntaks som vist nedenfor:

var skive_name [] data _type

I syntaks ovenfor starter vi med å spesifisere skivenavnet etterfulgt av et par firkantede parenteser og datatypen for skiven.

Du vil merke at skive erklæring er veldig lik den for en matrise. Vi spesifiserer imidlertid ikke en størrelse for en skive.

Lag skive - Metode 1

Det er to metoder for å lage en skive i go. Den første er å bruke det bokstavelige formatet. Dette ligner nær den som er vist i syntaksen ovenfor.

For eksempel oppretter koden nedenfor en skive som heter my_slice:

pakkehoved
Importer "FMT"
FUNCMAIN ()
var my_slice = [] int 1, 2, 3, 4, 5, 6
fmt.Println (my_slice)

Eksemplet ovenfor skaper en del av typen INT med standardverdier. Hvis du ikke vil bruke VaR -metoden for variabel erklæring, kan du bruke syntaksen nedenfor:

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

Ovennevnte metode er kjent som skive bokstavelig.

Lag skive - Metode 2

Den andre metoden for å lage et skive i go er å bruke make -funksjonen.

Syntaksen er som:

func make ([] t, len, cap) [] t

Funksjonen tar en datatype, lengde og kapasitet i dette tilfellet. Funksjonen vil tildele en matrise med størrelsen som spesifisert av kapasitetsparameteren. Funksjonen returnerer en skive som refererer til den matrisen.

For å se det i praksis, se nedenfor:

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

Dette eksemplet erklærer en skive av størrelse 10 og int -type. Den resulterende utgangen er en skive av 0 verdier.

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

Du kan tilordne verdiene til skiven ved hjelp av indeksnotasjon.

For å tilordne en verdi ved indeks 1, kan vi gjøre:

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

Ovennevnte kode skal returnere:

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

Merk elementet ved indeks 0 er oppdatert for å gjenspeile den nye verdien.

Skjæregenskaper

Det er to viktige egenskaper ved en skive som du bør være kjent med. Lengden og kapasiteten.

Lengden på skiven refererer til det totale antall elementer som er holdt av skiven, mens kapasiteten refererer til antall elementer definert av den underliggende matrisen. Dette telles fra det første elementet i skiven.

For å få lengden og kapasiteten til en skive, kan du bruke henholdsvis Len () og Cap () -metodene.

Et eksempel er som demonstrert nedenfor:

pakkehoved
Importer "FMT"
FUNCMAIN ()
Varmy_slice = [] int 1, 2, 3, 4, 5, 6
fmt.Println ("Lengde:", len (my_slice))
fmt.Println ("kapasitet:", cap (my_slice))

Eksempelkoden ovenfor skal returnere lengden og kapasiteten til skiven som:

Ength: 6
Kapasitet: 6

Gå indeksskiver

Visste du at vi kan danne en skive fra eksisterende skiver?

Vi kan oppnå dette ved å spesifisere en indeks som er bundet med en lav og høy bundet. For eksempel å lage en ny skive med elementer fra indeks 1 til 5:

new_slice: = my_slice [1: 5]
fmt.Println (new_slice)
Den resulterende skiven blir:
[2 3 4 5]

Skive iterasjon

Vi kan iterere over en matrise ved hjelp av klassikeren for en loop.

For eksempel:

pakkehoved
Importer "FMT"
FUNCMAIN ()
Varmy_slice = [] String "Python", "JavaScript", "Go", "Rust", "Dart"
Fori, vare: = rangemy_slice
fmt.Println (i, vare)

I eksemplet over bruker vi en for loop og en rekke uttalelser for å iterere over indeksen og elementet i skiven. Den resulterende utgangen:

0 Python
1 JavaScript
2 Gå
3 rust
4 Dart

Hvis du ikke vil bruke rekkevidden til å sløyfe over skiven, kan du bruke lengden på skiven som:

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

Eksemplet over vil returnere en lignende utgang som bruk av rekkevidden konstruksjon.

Gå kopierelement

Kopi -metoden lar deg kopiere elementer fra en skive til en annen. Tenk på eksemplet nedenfor:

FUNCCOPY_SLICE ()
Slice_1: = [] int 1, 2, 3, 4, 5
Slice_2: = [] int 6, 7, 8, 9, 10
new_slice: = kopi (skive_1, skive_2)
fmt.Printf ("%d elementer kopiert", new_slice)

Funksjonen vil returnere det totale antallet elementer som er kopiert.

Flerdimensjonal skive

Du kan også lage en flerdimensjonal skive. Det betyr i utgangspunktet en skive av skiver. Et eksempel er som vist:

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

fmt.Println (multi_slice)

Eksemplet ovenfor skal skrive ut en flerdimensjonal skive som:

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

For å få tilgang til elementer i en flerdimensjonal matrise, kan du bruke indekser som:

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

Ovennevnte syntaks returnerer det første elementet i den første skiven.

Konklusjon

Denne guiden hjelper deg med det grunnleggende om å jobbe med skiver i Go. Selv om vi ikke kan eksosskiver i omfanget av denne opplæringen, bør det komme i gang.