Heim  >  Artikel  >  Backend-Entwicklung  >  So richten Sie Golang-Slices ein

So richten Sie Golang-Slices ein

王林
王林Original
2023-05-13 11:02:37477Durchsuche

Golang ist eine der Programmiersprachen, die in den letzten Jahren viel Aufmerksamkeit erregt hat. Sie verfügt nicht nur über eine hohe Effizienz und hervorragende Fähigkeiten zur gleichzeitigen Verarbeitung, sondern bietet auch viele Vorteile, wie z. B. eine einfache Erlernbarkeit und eine präzise Syntax. Als eine der wichtigen Komponenten von Golang werden Slices häufig in der Entwicklung verwendet. Wie richtet man also Slices in Golang ein? Schauen wir uns das unten genauer an.

Was ist Schneiden?

In Golang ist ein Slice eine Datenstruktur ähnlich einem Array, weist jedoch eine höhere Flexibilität und Variabilität auf. Ein Slice kann als dynamisches Array betrachtet werden, die Länge ist nicht festgelegt und Elemente können nach Belieben hinzugefügt oder gelöscht werden. Die zugrunde liegende Struktur eines Slice ähnelt einem Array, hat jedoch keine feste Länge, sondern kann dynamisch erweitert werden.

Definition und Verwendung von Slices

Das Definieren eines Slice in Golang ist sehr einfach. Verwenden Sie einfach „[]“, um es zu deklarieren. Das Syntaxformat lautet wie folgt:

var a []int //Definieren Sie ein Slice a vom Typ int

Sie können auch die integrierte Make-Funktion verwenden, um wie folgt ein Slice mit einer Anfangskapazität von 0 zu erstellen:

a := make([]int, 0) //Erstellen Sie ein Slice vom Typ int mit einem Anfangsbuchstaben Kapazität von 0

Sie können sehen, dass der erste Parameter der Make-Funktion der Typ des entsprechenden Slice ist, der zweite Parameter die Länge des Slice und der dritte Parameter die Kapazität des Slice (optional). Die Länge stellt die Anzahl der Elemente dar, die sich derzeit im Slice befinden, und die Kapazität gibt an, wie viele Elemente das Slice derzeit speichern kann.

Als nächstes können wir über die Append-Funktion Elemente zum Slice hinzufügen, wie folgt:

a = append(a, 1) //Element 1 zum Slice a hinzufügen

Die Append-Methode hier ist eine in Golang integrierte Funktion. kann verwendet werden, um Elemente zu einem Slice hinzuzufügen. Nach dem Hinzufügen ändern sich die Elemente im Slice von 0 auf 1.

Zuweisung und Kopieren von Slices

In Golang sind die Zuweisung und das Kopieren von Slices recht einfach. Daher kopieren Sie beim Zuweisen oder Kopieren nur den Slice-Zeiger, ohne das zugrunde liegende Array zu kopieren eine Kopie.

Das Folgende ist ein Beispiel:

a := []int{1,2,3} //Definiere ein Segment a
b := a //A zuordnen zu b
b[0] = 4 //Ändern Der Wert von Slice b ist [4 2 3]
fmt.Println(a) // Der Wert der Ausgabe a ist [4 2 3]

Sie können sehen, dass sich nach der Zuweisung von a zu b eine Änderung der Elemente in b auswirkt zum Wert des Elements in a. Umgekehrt wirkt sich die Änderung eines Elements in a auch auf den Wert eines Elements in b aus. Dies liegt daran, dass a und b auf dasselbe zugrunde liegende Array verweisen.

Wenn Sie ein Slice kopieren müssen, ohne das ursprüngliche Array zu ändern, können Sie natürlich die Kopierfunktion verwenden, um wie folgt eine tiefe Kopie zu erstellen:

a := []int{1,2,3}
b := make( []int, len(a))
copy(b, a) //Kopiere den Wert von Slice a nach Slice b
b[0] = 4
fmt.Println(a) //Der Wert von Ausgabe a ist [ 1 2 3]
fmt.Println(b) // Der Wert von Ausgabe b ist [4 2 3]

Sie können sehen, dass nach Verwendung der Kopierfunktion zum Kopieren des Werts von Slice a in Slice b, Ändern Sie die Elemente in b. Der Wert der Elemente in a wird dadurch nicht beeinflusst.

Slice-Erweiterung

Slice-Erweiterung bedeutet, dass die Slice-Kapazität dynamisch erweitert werden muss, wenn sie nicht ausreicht, um mehr Elemente aufzunehmen. Wenn die Slice-Kapazität nicht ausreicht, weist Golang unten einen größeren Speicherplatz neu zu und kopiert die Elemente im ursprünglichen Slice in den neuen Speicher.

Wenn ein Slice erweitert wird, versucht Golang, es gemäß den folgenden Regeln zu erweitern:

  1. Wenn die neue Länge kleiner oder gleich dem Zweifachen der ursprünglichen Länge ist, beträgt die Kapazität des neuen Slice das Zweifache der Originallänge Länge.
  2. Ansonsten ist die neue Slice-Kapazität die Länge plus 1.

Hier ist ein Beispiel:

a := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
fmt.Println(len(a), cap(a)) //Ausgabe: 10 10

a = append(a, 10) //Ein Element hinzufügen
fmt.Println(len(a), cap(a )) //Ausgabe: 11 20

Wie Sie sehen können, wird die Kapazität nach dem Hinzufügen von Element 10 zum Slice auf 20 erweitert, was dem Zweifachen der ursprünglichen Länge entspricht.

Zusammenfassung

Slice in Golang ist eine sehr praktische Datenstruktur, die ähnliche Eigenschaften wie Arrays aufweist, jedoch flexibler und veränderbarer ist. Bei der Verwendung von Slices müssen wir die Grundkenntnisse der Slice-Definition, -Zuweisung, -Kopierung und -Erweiterung verstehen und sinnvolle Anwendungen basierend auf den tatsächlichen Anforderungen erstellen. Ich glaube, dass die Leser durch die Einleitung dieses Artikels ein tieferes Verständnis der Slicing-Einstellungen in Golang erlangen sollten.

Das obige ist der detaillierte Inhalt vonSo richten Sie Golang-Slices ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn