The latter is also easier to re-inline accidentally because
go func (x int) { do_work(x) } (x)
seems like a very roundabout way to say go do_work(x)
The "x := x" solution too suffers from this problem but slightly less: both idioms look like they are no-ops (while they are actually not) but at least "x := x" is weird enough to look like it was a deliberate choice, not some vestige from refactoring.