我正在閱讀 Mark Summerfield 的 Go Section 5.6.3 中的 Programming 一書中的 Closure 示例。他將 Closure 定義為“一個函數,它“捕獲”存在于創建它的同一作用域中的任何常量和變量,如果它引用它們的話。他說閉包的一種用途是匿名函數(或 Go 中的函數字面量)他舉了這樣的例子:addPng := func(name string) string { return name + ".png" }addJpg := func(name string) string { return name + ".jpg" }fmt.Println(addPng("filename"), addJpg("filename"))我知道命名的匿名函數addPng是字符串連接運算符的包裝器+。如果我理解正確,他正在為匿名函數分配一個名稱,然后使用該名稱調用該函數。我看不出這個例子的意義。如果我定義相同的函數addPng并在內部調用它,main()我會得到相同的結果:package mainimport ("fmt")func addPng (name string) string { return name + ".png" }func main() { fmt.Println(addPng("filename"))}我知道我不能在另一個函數中定義和使用一個函數。但是為什么 Summerfield 示例中的匿名函數稱為“Closure”?為什么要使用包裝函數?我錯過了什么?
- 2 回答
- 0 關注
- 244 瀏覽
添加回答
舉報
0/150
提交
取消
