Heim >Backend-Entwicklung >Golang >Analyse anonymer Golang-Funktionen und Schließungsprinzipien

Analyse anonymer Golang-Funktionen und Schließungsprinzipien

WBOY
WBOYOriginal
2024-05-03 10:12:02527Durchsuche

Ja, anonyme Funktionen in Go können verwendet werden, um schnell einmalige Funktionen oder Funktionen zu definieren, die sofort ausgeführt werden, während Schließungen verwendet werden, um lokale Variablen in der anonymen Funktion zu blockieren, sodass auf diese Variablen zugegriffen werden kann, auch wenn diese zurückkehrt.

Analyse anonymer Golang-Funktionen und Schließungsprinzipien

Anonyme Funktionen und Abschlüsse in Go verstehen

Anonyme Funktionen sind Funktionen, die direkt definiert werden, ohne einen Funktionsnamen zu definieren. Sie werden häufig verwendet, um einmalige Funktionen oder Funktionen zu definieren, die sofort ausgeführt werden müssen. Syntax:

func() {
  // 函数体
}

Beim Schließen handelt es sich um eine Technik, die lokale Variablen in einer anonymen Funktion „blockiert“, sodass auf lokale Variablen auch nach der Rückkehr der anonymen Funktion zugegriffen werden kann. Dies kann erreicht werden, indem eine anonyme Funktion als Rückgabewert einer anderen Funktion oder Methode verwendet wird. Syntax:

func makeCounter() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

Praktischer Fall: Generieren von Zufallszahlen

Der folgende Code verwendet anonyme Funktionen und Abschlüsse, um eine Funktion zu generieren, die Zufallszahlen generiert:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    // 创建一个匿名函数,生成一个随机数
    randomFunc := func() int {
        rand.Seed(time.Now().UnixNano())
        return rand.Intn(100)
    }

    // 将匿名函数包装在一个闭包中,封锁随机数生成器
    getRand := func(r func() int) func() int {
        return func() int {
            return r()
        }
    }(randomFunc)

    // 生成 10 个随机数并打印
    for i := 0; i < 10; i++ {
        fmt.Println(getRand())
    }
}

Ausgabe:

32
78
15
64
12
99
17
42
5
37

Das obige ist der detaillierte Inhalt vonAnalyse anonymer Golang-Funktionen und Schließungsprinzipien. 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