Preserving Local Variable State in Go: A Static-like Approach
Unlike in C, Go lacks a built-in "static" keyword to define local variables that retain their values across function calls. Fortunately, there's an elegant alternative in Go: closures.
Closures: The Key to Preserving State
Function literals in Go are closures. When a function literal refers to variables defined in an enclosing function, those variables become shared and accessible outside the function. Crucially, these variables persist as long as the closure is in scope.
Example: Preserving State with a Closure
Here's how we can achieve static-like functionality using a closure:
func main() { x := 1 y := func() { fmt.Println("x:", x) x++ } for i := 0; i < 10; i++ { y() } }
In this example, the variable x is declared outside the y function definition but is accessible within the closure. Each call to y increments x, and the variable retains its state across calls thanks to the closure's lifetime.
The above is the detailed content of How Can I Achieve Static-like Local Variable Persistence in Go?. For more information, please follow other related articles on the PHP Chinese website!