Heim > Backend-Entwicklung > Golang > So verschieben Sie Elemente von einem Slice in ein anderes

So verschieben Sie Elemente von einem Slice in ein anderes

WBOY
Freigeben: 2024-02-10 17:40:08
nach vorne
1086 Leute haben es durchsucht

So verschieben Sie Elemente von einem Slice in ein anderes

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.

Frageninhalt

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
}
Nach dem Login kopieren

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 dem Login kopieren

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

Lösung

Diese beiden Zeilen:

arr1 = &tmp
arr0 = &s
Nach dem Login kopieren

Ändern Sie lokale Variablen innerhalb einer Funktion arr1arr0 。这些变量恰好是指针,但它们只是 main in eine Kopie des bereitgestellten Eingabezeigers – sie sind keine Referenz auf den Eingabezeiger.

Wenn Sie arr1arr0 指针指向的内容,而不是指针本身,那么您将看到 main ändern, ändert sich der angegebene Wert:

*arr1 = tmp
*arr0 = s
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
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