So far the Tour has been 🤔 and 🧐 and even 🤨 but function closures had me 🤯 …
Each of the words on the page made sense but strung together in a sentence didn’t really make any sense to me.
Google resources threw up some nice explanations:
- 
https://gobyexample.com/closures
I like this site as it links all its examples to The Go Playground where you can try out each code block
 - 
http://tleyden.github.io/blog/2016/12/20/understanding-function-closures-in-go/
This comment was particularly useful
Essentially you can think of them like stateful functions, in the sense that they encapsulate state.
It made things click a bit for me, more than the abstract alphabet soup that other examples used :)
 
This one gets into some more hands-on examples
It also acted as a spoiler for the function closure exercise since that was the first example it gives :)
func fibonacci() func() int {
	f1 := 1
	f2 := 0
	return func() int {
		f1,f2 = f2, (f1+f2)
		return f1
	}
}I tweaked the version that I’d seen so that the return values stated at zero
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 
