So verwenden Sie Scheiben in Golang

PHPz
Freigeben: 2023-04-27 10:40:46
Original
1125 Leute haben es durchsucht

golang ist eine sehr effiziente und leicht zu erlernende Programmiersprache, die in der tatsächlichen Projektentwicklung weit verbreitet ist. Slices sind eine sehr wichtige Datenstruktur in Golang, die es uns ermöglicht, Arrays und Slices bequemer zu bedienen. In diesem Artikel wird die Verwendung von Slices in Golang vorgestellt.

1. Slices definieren und initialisieren

In Golang können Slices verwendet werden, um die Größe von Arrays dynamisch anzupassen. Ein Slice wird durch einen Zeiger auf das zugrunde liegende Array, eine Länge und eine Kapazität dargestellt. Die Länge eines Slice bezieht sich auf die Anzahl der Elemente, die es enthält, und die Kapazität bezieht sich auf die Anzahl der Elemente, die es aufnehmen kann. Daher können wir ein Slice auf folgende Weise definieren und initialisieren:

var slice []int             // 通过 var 关键词声明一个空切片
slice1 := make([]int, 5)    // 通过 make 函数创建一个长度为 5 的切片
slice2 := []int{1, 2, 3}    // 直接指定切片中的元素
slice3 := []int{0: 1, 2: 3} // 通过索引初始化切片中的元素
Nach dem Login kopieren

2. Elemente zum Slice hinzufügen

Verwenden Sie die Funktion append(), um Elemente zum Slice hinzuzufügen, wodurch das Slice automatisch erweitert wird (falls erforderlich). Ein Beispiel lautet wie folgt:

slice = append(slice, 1) // 在 slice 的末尾添加一个元素
slice = append(slice, 2, 3) // 在 slice 的末尾添加两个元素
Nach dem Login kopieren

Es ist zu beachten, dass die Funktion append() die Kapazität automatisch erweitert, wenn die Länge des Slice beim Hinzufügen von Elementen die Kapazität überschreitet. Beim Erweitern erstellt Golang ein neues zugrunde liegendes Array und kopiert die ursprünglichen Elemente in das neue Array. Daher wird nicht empfohlen, eine große Anzahl von Elementen in mehreren Schleifen zu einem Slice hinzuzufügen, da dies zu häufigen Erweiterungsvorgängen führt und die Leistung beeinträchtigt.

3. Elemente aus dem Slice löschen

In Golang wird das Löschen von Elementen im Slice normalerweise durch Neuzuweisung von Werten erreicht. Hier ist eine gängige Implementierung:

slice = append(slice[:i], slice[i+1:]...) // 从切片中删除第 i 个元素
Nach dem Login kopieren

Dieser Code teilt das Original-Slice in zwei Teile und führt sie dann zusammen. Unter diesen bedeutet Slice[:i] vom Anfang des Slice bis zum i-ten Element (mit Ausnahme des i-ten Elements) und Slice[i+1:] vom i+1-ten Element bis zum Ende der Scheibe. Einer der beiden Slices enthält alle Elemente, die beibehalten werden müssen, und der andere enthält keine Elemente, die gelöscht werden müssen. Zum Schluss kombinieren Sie sie mit dem ...-Operator.

Darüber hinaus können wir auch die Funktion copy() verwenden, um Elemente zu löschen. Ein Beispiel lautet wie folgt:

copy(slice[i:], slice[i+1:]) // 从切片中删除第 i 个元素
slice = slice[:len(slice)-1] // 删除切片中的最后一个元素
Nach dem Login kopieren

Im obigen Code verschiebt die Funktion copy() alle Elemente nach dem zu löschenden Element um eine Position nach vorne und reduziert schließlich die Länge des Slice um eins, um den Zweck zu erreichen das Element zu löschen.

4. Slices kopieren und abfangen

Golang bietet zwei integrierte Funktionen zum Kopieren und Abfangen von Slices: copy() und append(). Im Folgenden stellen wir die Verwendung dieser beiden Funktionen vor:

  1. Funktion copy()
var slice1 []int // 定义一个空切片
slice2 := make([]int, 5) // 创建一个长度为 5 的切片
copy(slice1, slice2) // 将 slice2 复制到 slice1 中
Nach dem Login kopieren

Es ist zu beachten, dass die Funktion copy() nur die gleichen Elemente in den beiden Slices kopiert. Wenn die Länge des Quell-Slices größer ist als die Länge des Ziel-Slices, werden nur die Elemente kopiert, die im Ziel-Slice untergebracht werden können, und die überschüssigen Elemente werden abgeschnitten. Wenn die Länge des Ziel-Slices größer ist als die Länge des Quell-Slices, werden die überschüssigen Elemente im Ziel-Slice auf ihre Standardwerte gesetzt.

  1. append()-Funktion
var slice1 []int // 定义一个空切片
slice2 := []int{1, 2, 3} // 创建一个切片并初始化
slice1 = append(slice1, slice2...) // 将 slice2 追加到 slice1 中
Nach dem Login kopieren

Es ist zu beachten, dass Sie bei Verwendung der append()-Funktion, wenn Sie ein Slice an ein anderes Slice anhängen, den ...-Operator verwenden müssen, um es zu erweitern. Auf diese Weise wird das Quell-Slice in das Ziel-Slice erweitert, anstatt dass das Quell-Slice als Ganzes an das Ziel-Slice angehängt wird.

5. Durchqueren von Slices

Sie können die for-Schleife in Golang verwenden, um die Elemente im Slice zu durchlaufen. Ein Beispiel ist wie folgt:

for i, val := range slice {
    fmt.Printf("Index: %d, Value: %d\n", i, val)
}
Nach dem Login kopieren

Im obigen Code wird eine Bereichsform einer for-Schleife verwendet, um über die Elemente im Slice zu iterieren. Unter diesen repräsentiert i den Index des Elements und val den Wert des Elements. Wie Sie sehen können, ermöglicht uns die Verwendung von „Range“, die Elemente im Slice bequemer zu durchlaufen, was auch die empfohlene Traversierungsmethode in Golang ist.

Zusammenfassung:

In diesem Artikel werden die Definition und Initialisierung von Slices in Golang, das Hinzufügen von Elementen zu Slices, das Löschen von Elementen aus Slices, das Kopieren und Abfangen von Slices sowie das Durchlaufen von Slices vorgestellt. Slices sind eine gängige Datenstruktur, die Array-Operationen erheblich vereinfachen kann. Daher ist es für Golang-Entwickler sehr wichtig, die Verwendung von Slices zu beherrschen.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Scheiben in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage