Are the first two examples equivalent? In the go version, an anonymous function is being declared and then called with the value of the outer 'i'. In the clojure version, it appears that the value of 'i' is part of the closure for that function.<p>The go version does what it does to avoid a race condition, because the goroutines are being spun up in the background and it's highly likely that it will take longer to spin up at least one of them than it will to finish the loop, so without it you'd likely get output of all nines.<p>If the clojure version doesn't have that problem, then I think it's a somewhat telling indication of how it's actually working.<p>TL/DR: The Go version has to work around the race condition because the runtime is doing things "right", is core.async?