Heim  >  Artikel  >  Backend-Entwicklung  >  Gängige Entwurfsmuster für Golang-Funktionen

Gängige Entwurfsmuster für Golang-Funktionen

PHPz
PHPzOriginal
2024-04-26 17:51:01517Durchsuche

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
}

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])
            }
        }
    }
}

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
}

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
}

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 })
}

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]) })
}

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!

Stellungnahme:
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