package mainimport "fmt"
/*李逵和武松的study方法的邏輯是幾乎一模一樣的
然而為了分別儲存兩人的學習進度,需要開闢兩個全域性變數,函式內部的需要使用兩條分支結構才能完成業務邏輯
如果是108將都來學習。。。
此時**的可復用性很差
*/var progress int
func study(name string, hours int) ( int)
func main081()
/*使用閉包函式優化study
每個人有不同的學習進度,將這個進度儲存在【各自的閉包】中
*//*
閉包函式:返回函式的函式
閉包函式的好處:使用同乙份內層函式的**,建立出任意多個不同的函式物件,這些物件各自的狀態都被儲存在函式閉包(外層函式)中,各行其道,互不干擾
*/func getstudy(name string) func(int) int
return study
}func main()
輸出:
李逵學習了3小時李逵學習了5小時
李逵學習了2小時
李逵的學習進度10/10000
宋江學習了9小時
宋江學習了8小時
宋江學習了5小時
宋江的學習進度22/10000
函式 閉包06
一 預設引數 預設引數 預設引數必須寫在後面,可以不指定引數名,但是順序要保證,否則要指定引數名。預設值如果不傳參,則使用預設值。在python中如果元組裡面只有乙個元素,元素後面不加逗號,輸出的結果就是不是元組。二 arge被稱為不定長引數 可變引數 1 可變引數允許傳入0個或任意個引數,這些可變...
Go語言函式中的閉包學習
go函式是可以閉包的。閉包是乙個函式值,他來自函式體外部的變數引用 閉包 外部函式定義的內部函式就是閉包。閉包的作用及好處 閉包給訪問外部函式定義的內部變數創造了條件。也將關於函式的一切封閉到了函式內部,減少了全域性變數,這也是閉包的真實含義。小demo 上邊小demo是go文件中的閉包寫法 pos...
go閉包函式的特點
所謂閉包就是乙個函式 捕獲 了和它在同一作用域的其它常量和變數。這就意味著當閉包被呼叫的時候,不管在程式什麼地方呼叫,閉包能夠使用這些常量或者變數。它不關心這些捕獲了的變數和常量是否已經超出了作用域,所以只有閉包還在使用它,這些變數就還會存在.package main import fmt func...