Go's import system has tons of problems.
1) inconsistent syntax: import "github.com/fsouza/go-dockerclient"; docker.NewClient...
Notice how you import something with the trailing path being "go-dockerclient" but the actual package name is "docker"?
In npm, if you type x = require("foo"), you always refer to it as 'x.something'. You don't have to guess or read docs.
2) build flags. What the fuck?
// +build fuckme
3) Canonical import paths. Double what the fuck?
For those of you who don't know, if you have "github.com/foo/bar" but write 'package bar // import "github.com/google/bar"' then a user of your package will not be able to compile it unless they move it to the directory you gave.
Yeah, no joke.... I'm in awe at this stupidity
4) Poor project-based importing (something actually worse than virtualenv; nothing near as good as npm).
5) init side effects, e.g. look at how pprof works. Literally you do an underscore import and it mutates the behaviour of the http package. Thanks.