Gängige Entwurfsmuster für Golang-Funktionen

PHPz
Freigeben: 2024-04-26 17:51:01
Original
520 Leute haben es durchsucht

Das Funktionsentwurfsmuster der Go-Sprache wird verwendet, um die Lesbarkeit, Wartbarkeit und Wiederverwendbarkeit des Codes zu verbessern, einschließlich: Eingabe-/Ausgabeparameter: Ermöglicht Funktionen, den Wert des Aufrufers über Parameter zu ändern. Mehrere Werte zurückgeben: Vereinfachen Sie den Code und vermeiden Sie die Verwendung globaler Variablen. Funktioniert als Parameter: Erstellen Sie flexiblen, anpassbaren Code.

Gängige Entwurfsmuster für Golang-Funktionen

Gemeinsame Entwurfsmuster in Go-Sprachfunktionen

In diesem Artikel werden gängige Funktionsentwurfsmuster in der Go-Sprache vorgestellt, die die Lesbarkeit, Wartbarkeit und Wiederverwendbarkeit des Codes verbessern können.

Eingabe-/Ausgabeparameter

Eingabe-/Ausgabeparameter ermöglichen einer Funktion, den Wert des Aufrufers durch Parameter zu ändern. Beispielsweise können wir die Reihenfolge zweier Werte in einer Funktion vertauschen:

func swap(a, b *int) {
    *a, *b = *b, *a
}
Nach dem Login kopieren

Praxisbeispiel: Hilfsfunktion zum Sortieren:

func sort(arr []int) {
    for i := 0; i < len(arr); i++ {
        for j := i + 1; j < len(arr); j++ {
            if arr[i] > arr[j] {
                swap(&arr[i], &arr[j])
            }
        }
    }
}
Nach dem Login kopieren

Mehrere Werte zurückgeben

Die Go-Sprache ermöglicht es Funktionen, mehrere Werte zurückzugeben. Dies vereinfacht den Code und vermeidet die Verwendung globaler Variablen. Beispielsweise können wir die Funktion verwenden, um die minimalen und maximalen Werte aus einem Array zu erhalten:

func minMax(arr []int) (int, int) {
    min := arr[0]
    max := arr[0]
    for _, v := range arr {
        if v < min {
            min = v
        }
        if v > max {
            max = v
        }
    }
    return min, max
}
Nach dem Login kopieren

Praxisbeispiel: Funktion zur Berechnung von Statistiken:

func stats(arr []int) (float64, float64) {
    sum := 0
    for _, v := range arr {
        sum += v
    }
    average := float64(sum) / float64(len(arr))
    return average, float64(minMax(arr)[0] + minMax(arr)[1]) / 2
}
Nach dem Login kopieren

Funktion als Parameter

Go-Funktionen können als Parameter übergeben werden andere Funktionen. Dadurch können wir flexiblen, anpassbaren Code erstellen. Beispielsweise können wir eine Funktion als Vergleichsfunktion verwenden:

type Person struct {
    Name string
    Age  int
}

func compareByName(a, b Person) int {
    return strings.Compare(a.Name, b.Name)
}

func sortByName(people []Person) {
    sort.Slice(people, func(i, j int) bool { return compareByName(people[i], people[j]) < 0 })
}
Nach dem Login kopieren

Ein praktisches Beispiel: Universelle Sortierfunktion zum Aufteilen einer Struktur basierend auf verschiedenen Feldern:

func sortBy(slice interface{}, less func(i, j interface{}) bool) {
    sort.Slice(slice, func(i, j int) bool { return less(slice[i], slice[j]) })
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonGängige Entwurfsmuster für Golang-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage