Go - Slices: Ein Anfängerleitfaden für dynamische Arrays
Hallo da draußen, zukünftige Go-Programmierer! Heute tauchen wir in eine der vielseitigsten und leistungsfähigsten Datenstrukturen von Go ein: Slices. Stellt euch Slices als die Schweizer Army knives der Go-Programmierung vor – sie sind flexibel, effizient und wenn ihr sie einmal mastered habt, werdet ihr euch fragen, wie ihr ohne sie jemals programmiert habt!
Was ist ein Slice?
Bevor wir loslegen, lassen wir uns auf die Szene einstellen. Stellt euch vor,你们的计划一个派对 (natürlich eine Coding-Party!). Ihr braucht eine Gästeliste, aber你们的不知道会有多少人 kommen. Hier glänzen Slices! Sie sind wie dynamische Gästelisten, die wachsen oder schrumpfen können, wie nodig.
In Go ist ein Slice eine flexible, dynamische Ansicht in ein Array. Es ist wie ein Fenster, das seine Größe anpassen kann, allowing euch, mit einem Teil eines Arrays zu arbeiten oder sogar auf der fly ein neues zu erstellen.
Definition eines Slices
Lassen wir uns anfangen, unseren ersten Slice zu erstellen. Es gibt mehrere Möglichkeiten, das zu tun, also lassen wir uns sie einer nach dem anderen anschauen.
Methode 1: Verwendung der make()-Funktion
guestList := make([]string, 3)
fmt.Println(guestList) // Ausgabe: [ ]
In diesem Beispiel haben wir einen Slice von Strings mit einer initialen Länge von 3 erstellt. Es ist, als hätten wir drei leere Stühle für unsere Party vorbereitet. Die make()
-Funktion ist unser Party-Planer, der den Raum für unsere Gäste vorbereitet.
Methode 2: Slice-Literal
guestList := []string{"Alice", "Bob", "Charlie"}
fmt.Println(guestList) // Ausgabe: [Alice Bob Charlie]
Hier erstellen wir einen Slice und füllen ihn sofort mit Gästen. Es ist, als hätten wir eine VIP-Liste bereit!
Methode 3: Slicing eines vorhandenen Arrays
partyRoom := [5]string{"Alice", "Bob", "Charlie", "David", "Eve"}
vipGuests := partyRoom[0:3]
fmt.Println(vipGuests) // Ausgabe: [Alice Bob Charlie]
In diesem Fall erstellen wir einen Slice aus einem vorhandenen Array. Es ist, als würden wir die ersten drei Personen aus unserem Partyraum zur VIP-Liste machen.
len() und cap()-Funktionen
Nun, da wir unsere Gästelisten haben, sprechen wir über zwei wichtige Funktionen: len()
und cap()
.
guestList := make([]string, 3, 5)
fmt.Printf("Länge: %d, Kapazität: %d\n", len(guestList), cap(guestList))
// Ausgabe: Länge: 3, Kapazität: 5
-
len()
sagt uns, wie viele Gäste derzeit auf unserer Liste stehen. -
cap()
sagt uns, wie viele Gäste unsere Liste halten kann, bevor sie wachsen muss.
Denkt an len()
als die Anzahl der derzeit aufgestellten Stühle und cap()
als die Gesamtzahl der Stühle, die im Partyraum verfügbar sind.
Nil Slice
Manchmal könnt ihr einen Slice deklarieren, aber nicht initialisieren. Dies wird als nil-Slice bezeichnet.
var emptyList []string
fmt.Println(emptyList == nil) // Ausgabe: true
Ein nil-Slice ist wie eine Gästelistenidee, aber das List nicht tatsächlich erstellt. Es ist völlig in Ordnung und kann in bestimmten Situationen nützlich sein!
Subslicing
Subslicing ist wie das Erstellen einer VIP-Abteilung in eurer Party. Ihr könnt einen Teil eines vorhandenen Slices auswählen, um einen neuen zu erstellen.
fullGuestList := []string{"Alice", "Bob", "Charlie", "David", "Eve"}
vipGuests := fullGuestList[1:4]
fmt.Println(vipGuests) // Ausgabe: [Bob Charlie David]
Hier wählen wir Gäste von Index 1 bis 3 (denkt daran, der Endindex ist exklusiv) als unsere VIPs aus.
append() und copy()-Funktionen
append()
Die append()
-Funktion ist wie ein Türsteher, der neue Gäste zu eurer Party hinzufügen kann.
guestList := []string{"Alice", "Bob"}
guestList = append(guestList, "Charlie")
fmt.Println(guestList) // Ausgabe: [Alice Bob Charlie]
Ihr könnt sogar mehrere Gäste auf einmal hinzufügen:
guestList = append(guestList, "David", "Eve")
fmt.Println(guestList) // Ausgabe: [Alice Bob Charlie David Eve]
copy()
Die copy()
-Funktion ist wie ein Party-Planer, der eure Gästeliste kopieren kann.
originalList := []string{"Alice", "Bob", "Charlie"}
newList := make([]string, len(originalList))
copiedElements := copy(newList, originalList)
fmt.Printf("Kopierte %d Elemente. Neue Liste: %v\n", copiedElements, newList)
// Ausgabe: Kopierte 3 Elemente. Neue Liste: [Alice Bob Charlie]
Slice-Methoden-Tabelle
Hier ist eine praktische Tabelle, die die wichtigsten Slice-Methoden zusammenfasst, die wir besprochen haben:
Methode | Beschreibung | Beispiel |
---|---|---|
make() | Erstellt einen Slice | make([]int, 5) |
len() | Gibt die Länge eines Slices zurück | len(slice) |
cap() | Gibt die Kapazität eines Slices zurück | cap(slice) |
append() | Fügt Elemente zu einem Slice hinzu | slice = append(slice, 1, 2, 3) |
copy() | Kopiert Elemente von einem Slice in einen anderen | copy(destSlice, sourceSlice) |
Subslicing | Erstellt einen neuen Slice aus einem vorhandenen | newSlice := slice[1:4] |
Und das war's, Freunde! Ihr habt gerade eure ersten Schritte in die wundersame Welt der Go-Slices gemacht. Denkt daran, Übung macht den Meister, also fürchtet euch nicht, mit diesen Konzepten zu experimentieren. Erstellt eure eigenen Gästelisten, spielt mit dem Hinzufügen und Kopieren und bald werdet ihr wie ein Profi durch Go-Code schneiden und schneiden!
Frohes Coden und möge eure Slices immer perfekt für eure Bedürfnisse passen!
Credits: Image by storyset