Go語言學習筆記 閉包

2021-10-02 21:15:23 字數 687 閱讀 2339

/*

首先這裡的func(int) int是指函式test()返回乙個函式

類似的,返回多個值是這樣寫:func a()(int,int,float32)

*/func

test()

func

(int

)int

}func

main()

書中對閉包的解釋

閉包的概念:是可以包含自由(未繫結到特定物件)變數的**塊,這些變數不在這個**塊內或者任何全域性上下文中定義,而是在定義**塊的環境中定義。要執行的**塊(由於自由變數包含在**塊中,所以這些自由變數以及它們引用的物件沒有被釋放)為自由變數提供繫結的計算環境(作用域)。1

我的理解(人話版)

為什麼能夠實現閉包

原因就在於test()是f的父函式,而f被賦給了乙個變數,這導致f在main()結束之前始終在記憶體中。因此test()中的變數也始終在記憶體中,不會在f := test()呼叫結束後被**。

閉包有啥用

一般來說函式執行之後,其內部變數所占用的記憶體就會被釋放。如果需要使用函式內部的變數繼續進行操作,那就需要用到閉包來呼叫函式內部的變數,因此就可以得出閉包的主要功能:1.閉包能夠讀取其他函式內部變數;2.能讓這些變數的值始終保持在記憶體中,不會在f呼叫後被自動清除。

許式偉 的《go語言程式設計》 ↩︎

Go語言學習 匿名函式 閉包

匿名函式 匿名函式的定義格式 func 引數 返回值 沒有名字的函式 package main import fmt 匿名函式 var f1 func x,y int func main f1 10,20 如果只是呼叫一次的函式,還可以簡寫成立即執行函式 func x,y int 10,20 閉包 ...

Go語言學習筆記十 Go語言函式的閉包與案例

1 package main 23 import fmt 45 67 adder 這個函式的返回值為乙個型別為func int int的函式 這就是組成了乙個閉包 8 func adder func int int14 15func main 二 案例一 1 package main23 閉包的例子...

GO語言學習 匿名函式和閉包

go語言支援匿名函式,即函式可以像普通變數一樣被傳遞或使用。使用方法如下 a func input1 int int return input1 1 b a 2 go語言的匿名函式就是閉包,以下是 go語言程式設計 中對閉包的解釋 基本概念 閉包是可以包含自由 未繫結到特定物件 變數的 塊,這些變數...