php-Editor Apple stellt Ihnen vor, wie Sie Elemente von einem Slice in ein anderes verschieben. In der Programmierung ist ein Slice eine häufig verwendete Datenstruktur, die mehrere Elemente speichern kann. Manchmal müssen wir ein Element aus einem Slice herausnehmen und in ein anderes Slice verschieben. Dieser Prozess kann das Löschen, Einfügen, Indizieren von Elementen usw. umfassen. Als nächstes besprechen wir im Detail, wie dieser Vorgang implementiert werden kann, damit jeder die relevanten Kenntnisse des Slicings besser verstehen und anwenden kann.
package main import ( "fmt" ) func main() { arr0 := []int{ 1,2,3,4,5, } arr1 := []int{} fmt.println(arr0) fmt.println(arr1) fmt.println("transferring...") transfer(&arr0, &arr1) fmt.println(arr0) fmt.println(arr1) } func transfer(arr0 *[]int, arr1 *[]int) { tmp := make([]int, 0) for i:=0;i<len(*arr0);i++ { tmp = append(tmp, (*arr0)[i]) } arr1 = &tmp s := make([]int, 0) arr0 = &s }
Für die Übertragungsfunktion plane ich, die Elemente von Slice arr0 auf Slice arr1 und leeres Slice arr0 zu übertragen
Aber es hat nicht funktioniert
Das ist meine Ausgabe
[1 2 3 4 5] [] transferring... [1 2 3 4 5] []
Nach der Übertragung benötige ich folgende Ergebnisse. [] [1 2 3 4 5] Tatsächlich bleiben arr0 und arr1 in der Hauptfunktion jedoch gleich!
Kann mir jemand sagen, warum das nicht funktioniert?
Ich denke, in meiner Erinnerung sollte es so sein
Nachdem die Übertragungsfunktion ausgeführt wurde
Diese beiden Zeilen:
arr1 = &tmp arr0 = &s
Ändern Sie lokale Variablen innerhalb einer Funktion arr1
和 arr0
。这些变量恰好是指针,但它们只是 main
in eine Kopie des bereitgestellten Eingabezeigers – sie sind keine Referenz auf den Eingabezeiger.
Wenn Sie arr1
和 arr0
指针指向的内容,而不是指针本身,那么您将看到 main
ändern, ändert sich der angegebene Wert:
*arr1 = tmp *arr0 = s
Das obige ist der detaillierte Inhalt vonSo verschieben Sie Elemente von einem Slice in ein anderes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!