在Go 中保留局部變數狀態:類似靜態的方法
與C 不同,Go 關鍵字缺少內建的「static」定義在函數呼叫之間保留其值的局部變數。幸運的是,Go 中有一個優雅的替代方案:閉包。
閉包:保存狀態的關鍵
Go 中的函數文字是閉包。當函數文字引用封閉函數中定義的變數時,這些變數將在函數外部共用和存取。至關重要的是,只要閉包在作用域內,這些變數就會一直存在。
範例:使用閉包保留狀態
以下是我們如何使用閉包:
func main() { x := 1 y := func() { fmt.Println("x:", x) x++ } for i := 0; i < 10; i++ { y() } }
在此範例中,變數x 在y 函數定義之外聲明,但可以在y 函數定義內存取關閉。每次呼叫 y 都會遞增 x,並且由於閉包的生命週期,變數在呼叫之間保留其狀態。
以上是Go中如何實現類似靜態的局部變數持久化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!