Go is pretty slow right now. I wrote a prime number finder in Go and Ruby 1.9 and Ruby smoked it. Granted that's probably mostly due to all the math in Ruby being C, but still, you can't just say that Go is faster because it's compiled before hand.
bender:Desktop phil$ time go run primes.go
Found them! 78702
real 0m21.349s
user 0m21.304s
sys 0m0.033s
bender:Desktop phil$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.0]
bender:Desktop phil$ time ruby primes.rb
Found them! 78702
real 0m7.656s
user 0m7.651s
sys 0m0.005s
bender:Desktop phil$ time go build primes.go
real 0m0.269s
user 0m0.231s
sys 0m0.033s
You're using integer arithmetic in Ruby and floating-point arithmetic in Go. Try replacing
math.Mod(float64(i), float64(j))
with
i%j
My results:
$ time go run primes.go
Found them! 78702
real 0m0.835s
user 0m0.787s
sys 0m0.039s
$ time ruby primes.rb
Found them! 78702
real 0m21.013s
user 0m21.005s
sys 0m0.016s
It's worth noting that the time on the go side includes the time to run the compiler, and linker, since you're using `go run`, instead of `go build`. Not saying that's bad, just something to keep in mind when benchmark numbers are in the second range.
(I understand that you did because the original poster did it)