溫馨提示×

go語言閉包函數(shù)怎么使用

小億
83
2024-01-27 14:01:13
欄目: 編程語言

在Go語言中,閉包函數(shù)是指一個函數(shù)可以訪問到其外部作用域中的變量。閉包函數(shù)可以將變量作為參數(shù)或返回值,用于實現(xiàn)某些特定的功能。

下面是一個簡單的閉包函數(shù)的例子:

func main() {
    // 定義匿名函數(shù)并賦值給變量add
    add := func(x, y int) int {
        return x + y
    }

    // 調用閉包函數(shù)
    result := add(3, 5)
    fmt.Println(result) // 輸出:8
}

在上面的例子中,我們定義了一個匿名函數(shù)并將其賦值給變量add,該函數(shù)可以訪問到其外部作用域中的變量xy,并返回它們的和。我們通過調用add函數(shù),傳入?yún)?shù)3和5,得到結果8。

閉包函數(shù)還可以用于實現(xiàn)函數(shù)工廠,即返回一個函數(shù)的函數(shù)。下面是一個示例:

func adder() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}

func main() {
    // 調用函數(shù)工廠,返回一個閉包函數(shù)
    a := adder()

    // 調用閉包函數(shù)
    fmt.Println(a(1)) // 輸出:1
    fmt.Println(a(2)) // 輸出:3
    fmt.Println(a(3)) // 輸出:6
}

在上面的例子中,我們定義了一個adder函數(shù),它返回一個閉包函數(shù)。閉包函數(shù)中的變量sum會在每次調用時保留其狀態(tài)。我們通過調用adder函數(shù)得到一個閉包函數(shù)a,然后分別調用a函數(shù)并傳入不同的參數(shù),最后輸出結果??梢钥吹?,每次調用a函數(shù)時,變量sum會保持其之前的累加結果。

0