Heim > Artikel > Backend-Entwicklung > So fügen Sie Elemente zu Slices in der Go-Sprache hinzu
In der Go-Sprache können Sie append() verwenden, um dynamisch Elemente zu einem Slice hinzuzufügen. append() kann ein Element, mehrere Elemente oder ein neues Slice an ein Slice anhängen, mit der Syntax „append(slice, element 1, element 2...)“ oder „append(slice, new Slice…)“ . Wenn Sie die Funktion append() zum dynamischen Hinzufügen von Elementen zu einem Slice verwenden und nicht genügend Platz für genügend Elemente vorhanden ist, wird das Slice „erweitert“ und die Länge des neuen Slice ändert sich.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.
In der Go-Sprache können Sie append() verwenden, um Elemente dynamisch zu einem Slice hinzuzufügen.
Go-Sprache append()-Funktion
append kann ein Element, mehrere Elemente und neue Slices an ein Slice anhängen
var a []int a = append(a, 1) // 追加1个元素 a = append(a, 1, 2, 3) // 追加多个元素, 手写解包方式 a = append(a, []int{1,2,3}...) // 追加一个切片, 切片需要解包
Es sollte jedoch beachtet werden, dass bei Verwendung der append()-Funktion zum Erstellen der Slice dynamisch Wenn beim Hinzufügen von Elementen nicht genügend Platz für genügend Elemente vorhanden ist, wird das Slice „erweitert“ und die Länge des neuen Slice ändert sich.
Wenn das Slice erweitert wird, besteht die Kapazitätserweiterungsregel darin, die Kapazität um das Zweifache zu erweitern, z. B. 1, 2, 4, 8, 16 .... Der Code lautet wie folgt:
var numbers []int for i := 0; i < 10; i++ { numbers = append(numbers, i) fmt.Printf("len: %d cap: %d pointer: %p\n", len(numbers), cap(numbers), numbers) }
Die Codeausgabe lautet wie folgt folgt:
Codebeschreibung Wie folgt:
Zeile 1 deklariert einen Integer-Slice.
Zeile 4, Schleife, um 10 Zahlen zum Zahlenabschnitt hinzuzufügen.
Zeile 5: Drucken Sie die Längen-, Kapazitäts- und Zeigeränderungen des Slice aus, verwenden Sie die Funktion len(), um die Anzahl der Elemente des Slice anzuzeigen, und verwenden Sie die Funktion cap(), um die Kapazität des Slice anzuzeigen .
Wenn wir uns die Codeausgabe ansehen, können wir eine interessante Regel finden: Die Slice-Länge len ist nicht gleich der Slice-Kapazitätsobergrenze.
Der Prozess des kontinuierlichen Hinzufügens von Elementen zu einem Slice ähnelt dem eines Unternehmensumzugs. In der frühen Phase der Unternehmensentwicklung sind die Mittel knapp und es gibt nur wenige Mitarbeiter, sodass nur ein kleiner Raum benötigt wird, um alle Mitarbeiter unterzubringen Das Unternehmen expandiert und das Einkommen steigt. Die Erhöhung der Anzahl der Arbeitsplätze erfordert eine Erweiterung der Arbeitsplätze, aber die Größe der Büroflächen ist festgelegt und kann nicht geändert werden. Daher kann sich das Unternehmen nur für einen Umzug entscheiden an einen neuen Bürostandort.
Mitarbeiter und Arbeitsplätze sind die Elemente im Slice.
Das Büro ist der zugewiesene Speicher.
Umziehen bedeutet, Erinnerung neu zuzuordnen.
Egal wie oft Sie umziehen, der Firmenname wird sich nie ändern, und der Variablenname, der den externen Slice darstellt, wird sich nicht ändern.
Da sich die Adresse nach dem Umzug ändert, wird auch die Speicher-„Adresse“ geändert.
Zusätzlich zum Anhängen am Ende des Slice können wir auch Elemente am Anfang des Slice hinzufügen:
var a = []int{1,2,3} a = append([]int{0}, a...) // 在开头添加1个元素 a = append([]int{-3,-2,-1}, a...) // 在开头添加1个切片
Das Hinzufügen von Elementen am Anfang des Slice führt im Allgemeinen zu einer Neuzuweisung des Speichers und führt zu allem Vorhandene Elemente müssen einmal kopiert werden. Daher ist die Leistung beim Hinzufügen von Elementen am Anfang eines Slice viel schlechter als beim Anhängen von Elementen am Ende.
Da die Append-Funktion die Eigenschaften des neuen Slice zurückgibt, unterstützen Slices auch Kettenoperationen. Wir können mehrere Append-Operationen kombinieren, um Elemente in der Mitte des Slice einzufügen:
var a []int a = append(a[:i], append([]int{x}, a[i:]...)...) // 在第i个位置插入x a = append(a[:i], append([]int{1,2,3}, a[i:]...)...) // 在第i个位置插入切片
Der zweite Append-Aufruf in jeder Add-Operation ist ein temporärer Slice erstellt wird, wird der Inhalt von a[i:] in das neu erstellte Slice kopiert und dann wird das temporär erstellte Slice an a[:i] angehängt.
【Verwandte Empfehlungen: Go-Video-Tutorial, Programmierunterricht】
Das obige ist der detaillierte Inhalt vonSo fügen Sie Elemente zu Slices in der Go-Sprache hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!