Heim  >  Artikel  >  Backend-Entwicklung  >  Best-Practice-Untersuchung anonymer Golang-Funktionen und -Abschlüsse

Best-Practice-Untersuchung anonymer Golang-Funktionen und -Abschlüsse

WBOY
WBOYOriginal
2024-05-02 12:33:02691Durchsuche

In Go sind anonyme Funktionen und Abschlüsse leistungsstarke Werkzeuge für die Arbeit mit Funktionen, und das Befolgen von Best Practices kann die Qualität Ihres Codes verbessern. Anonyme Funktionen sollten einfach gehalten werden, die Erfassung externer Variablen vermeiden und variable Parameter verwenden. Abschlüsse sollten die Erfassung freier Variablen einschränken und die Änderung freier Variablen vermeiden. Wenn eine große Anzahl freier Variablen erfasst wird, können benannte Funktionen zur Verbesserung der Lesbarkeit verwendet werden.

Best-Practice-Untersuchung anonymer Golang-Funktionen und -Abschlüsse

Best Practices für anonyme Funktionen und Abschlüsse in Golang

In Golang sind anonyme Funktionen und Abschlüsse leistungsstarke Werkzeuge bei der Arbeit mit Funktionen. Das Befolgen von Best Practices kann die Lesbarkeit, Wartbarkeit und Leistung des Codes verbessern.

Anonyme Funktionen

Anonyme Funktionen sind Funktionen ohne Namen, die normalerweise als Rückrufe oder einmalige Vorgänge verwendet werden.

Verwenden Sie Best Practices:

  • Keep it simple: Anonyme Funktionen sollten kurz sein und eine einzelne Aufgabe ausführen.
  • Vermeiden Sie die Erfassung externer Variablen: Die Erfassung externer Variablen durch anonyme Funktionen führt zu Abschlüssen, die zu unerwartetem Verhalten führen können.
  • Verwenden Sie variable Parameter: Die Erfassung aller verbleibenden Parameter mit ... bietet Flexibilität. ... 捕获所有剩余参数可以提供灵活性。

实战案例:

下面的匿名函数将文件行数计数传递给 ioutil.ReadDir 函数:

import (
    "fmt"
    "io/ioutil"
)

func main() {
    numLines := func(path string) int {
        bytes, err := ioutil.ReadFile(path)
        if err != nil {
            return 0
        }
        return len(bytes)
    }
    entries, _ := ioutil.ReadDir(".")
    for _, entry := range entries {
        fmt.Println(numLines(entry.Name()))
    }
}

闭包

闭包是一种包含自由变量(在函数外部声明但可以在函数内部访问的变量)的函数。

遵循最佳实践:

  • 限制自由变量: 捕获尽可能少的自由变量,以避免不必要的耦合。
  • 避免修改自由变量: 修改自由变量可能产生意外后果。
  • 使用命名函数: 如果闭包需要捕获大量自由变量,请考虑使用命名函数来改善可读性。

实战案例:

下面的闭包使用 count

🎜Praktischer Fall: 🎜🎜🎜Die folgende anonyme Funktion übergibt die Dateizeilenanzahl an die Funktion ioutil.ReadDir: 🎜
func createCounter() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

func main() {
    counter := createCounter()
    fmt.Println(counter()) // 1
    fmt.Println(counter()) // 2
    fmt.Println(counter()) // 3
}
🎜Closure🎜🎜Closure ist eine kostenlose enthaltende Funktion mit Variablen (Variablen, die außerhalb der Funktion deklariert, aber innerhalb der Funktion zugänglich sind). 🎜🎜Befolgen Sie Best Practices: 🎜🎜🎜🎜Begrenzen Sie freie Variablen: 🎜 Erfassen Sie so wenige freie Variablen wie möglich, um unnötige Kopplungen zu vermeiden. 🎜🎜🎜Vermeiden Sie das Ändern freier Variablen: 🎜 Das Ändern freier Variablen kann unbeabsichtigte Folgen haben. 🎜🎜🎜Verwenden Sie benannte Funktionen: 🎜 Wenn der Abschluss eine große Anzahl freier Variablen erfassen muss, sollten Sie die Verwendung benannter Funktionen in Betracht ziehen, um die Lesbarkeit zu verbessern. 🎜🎜🎜Praktischer Fall: 🎜🎜🎜Der folgende Abschluss verwendet die Variable count, um die Anzahl der Funktionsaufrufe zu verfolgen: 🎜rrreee

Das obige ist der detaillierte Inhalt vonBest-Practice-Untersuchung anonymer Golang-Funktionen und -Abschlüsse. 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