Heim > Backend-Entwicklung > Golang > Wie kann ich als Argumente in Go übergebene Slices effektiv ändern?

Wie kann ich als Argumente in Go übergebene Slices effektiv ändern?

Patricia Arquette
Freigeben: 2024-12-30 18:06:19
Original
161 Leute haben es durchsucht

How Can I Effectively Modify Slices Passed as Arguments in Go?

Slices effektiv in Go übergeben: Einschränkungen bei der Wertübergabe vermeiden

In Go erfolgt die Übergabe eines Slice als Funktionsargument im Wesentlichen über den Wert. Dies bedeutet, dass, wenn ein Argument-Slice innerhalb der Funktion mithilfe von „append“ geändert wird, dies keine Auswirkungen auf das ursprüngliche Slice außerhalb des Funktionsbereichs hat.

Um diese Einschränkung zu veranschaulichen, betrachten Sie das folgende Beispiel:

nums := []int{1, 2, 3}

func addToNumbs(nums []int) []int {
    nums = append(nums, 4)
    fmt.Println(nums) // []int{1, 2, 3, 4}
}

fmt.Println(nums) // []int{1, 2, 3}
Nach dem Login kopieren

In diesem Beispiel bleiben die ursprünglichen Slice-Nummern trotz der Änderung innerhalb der Funktion addToNumbs unberührt. Um dieses Problem zu lösen, kann man stattdessen einen Zeiger auf das Slice übergeben:

func myAppend(list *[]string, value string) {
    *list = append(*list, value)
}
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass das ursprüngliche Slice direkt geändert wird.

Alternativ kann in bestimmten Szenarien einfach das zurückgegeben werden Ein modifiziertes Slice aus der Funktion kann eine effiziente Lösung sein:

func validate(obj Validatable, messages []ValidationMessage) ([]ValidationMessage, error) {
    // Modification...
    return messages, nil
}
Nach dem Login kopieren

Zusammenfassend lässt sich sagen, dass es bei der Übergabe eines Slice als Argument in Go wichtig ist, zu berücksichtigen, ob Änderungen darin vorgenommen werden Die Funktion sollte sich auf das ursprüngliche Slice auswirken. Wenn ja, sind die Verwendung eines Zeigers auf das Slice oder die Rückgabe des geänderten Slice effektive Ansätze, um das gewünschte Verhalten zu erreichen.

Das obige ist der detaillierte Inhalt vonWie kann ich als Argumente in Go übergebene Slices effektiv ändern?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage