Heim > Artikel > Backend-Entwicklung > Gängige Entwurfsmuster für Golang-Funktionen
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.
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 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]) } } } }
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 }
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!