Wie kann ich eine Funktion effizient auf jedes Element in einer Go-Liste anwenden?

Barbara Streisand
Freigeben: 2024-11-13 04:39:02
Original
170 Leute haben es durchsucht

How Can I Apply a Function to Every Element in a Go List Efficiently?

Effiziente Funktionsanwendung auf Listen in Go

Um eine Funktion auf jedes Element in einer Go-Liste anzuwenden und die Ergebnisse in einer neuen Liste zu speichern Beim herkömmlichen Ansatz wird die Eingabeliste in einer Schleife durchlaufen und die Ergebnisse an die Ausgabeliste angehängt. Ab Go 1.18 gibt es jedoch eine prägnantere und allgemeinere Lösung: die Map-Funktion.

Die Map-Funktion benötigt eine Liste von Elementen vom Typ T und eine Funktion, die jedes Element in einen Wert vom Typ konvertiert V. Es wird eine neue Liste vom Typ []V zurückgegeben, die die Ergebnisse der Anwendung der Funktion auf jedes Element in der Eingabeliste enthält.

Hier ist ein Beispiel:

func Map[T, V any](ts []T, fn func(T) V) []V {
    result := make([]V, len(ts))
    for i, t := range ts {
        result[i] = fn(t)
    }
    return result
}

// Usage example
input := []int{4, 5, 3}
outputInts := Map(input, func(item int) int { return item + 1 })
outputStrings := Map(input, func(item int) string { return fmt.Sprintf("Item:%d", item) })
Nach dem Login kopieren

In diesem Beispiel Eingabe ist eine Liste von ganzen Zahlen. Wir können die Map-Funktion mit zwei verschiedenen Funktionen anwenden, um eine Liste inkrementierter Ganzzahlen (outputInts) und eine Liste formatierter Zeichenfolgen (outputStrings) zu erstellen. Dies macht eine explizite Schleife überflüssig und bietet eine prägnante und effiziente Alternative zum herkömmlichen Ansatz.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Funktion effizient auf jedes Element in einer Go-Liste anwenden?. 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