Quantcast
Channel: Active questions tagged return-value - Stack Overflow
Viewing all articles
Browse latest Browse all 206

Golang closure not storing captured variables?

$
0
0

In this block of code below, I expect the output to be 0, 1, 2, 3,..., 9. However, only the output 10, 10,...,10 is produced.

package mainimport "fmt"func adder() []func() {    out := []func(){}    for i := 0; i < 10; i++ {        out = append(out, func() { fmt.Println(i) })    }    return out}func main() {    out := adder()    for i := 0; i < 10; i++ {        out[i]()    }}

My mental model suggests that a new function is generated and stored every time in the for-loop, but it doesn't seem to be the case. Is there a solution to generating new functions without modifying the signature (no parameters or global variables) but still keeping the current value of i?


Viewing all articles
Browse latest Browse all 206

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>