As our loop iterates, the number is being assigned to the next value in the array. And since the goroutines can be scheduled at any point in time in the future, it is undetermined what values will be printed from within the goroutine.
On my machine, there is a high probability that the loop exited before any goroutines even began and the variable number fell out of scope.
But then a new question arises, ie. Can the goroutines reference something that has potentially been garbage collected?
Cool fact about how Go manages memory: The Go runtime is observant enough to know that a reference to number variable is still being held, and therefore will transfer the memory to the heap so that goroutines can continue to access it.