It's fine, I can work around it, but it's still quite annoying.
It is not really a big deal, I can overcome it with some simlinks and conventions, but this is not elegant; I hope a model to support this better will be added sometime.
The convincing reason is that you get several automated behaviors in fetching, installing and building this way.
If you don't care for those, you can use whatever path you like for your code, and a custom makefile for building.
Just don't expect "go build", "go install" etc to work.
This is the official installation document. If you have problems finding proper tutorials, there is also
which also links to the previous document on install instructions.
I've never encountered anyone -- both online and offline -- who has had trouble with this beyond "huh, I didn't know I had to do that. Duly noted".
Until now, that is. You are making a mountain out of a molehill ... nay, an anthill.