But I'll explain the GOROOT stuff in a bit more detail ...
Basically the way it's set up prevents golang modules from being packaged up for Linux distros. There are two main problems. Firstly the 'go' utility tries to recompile installed modules, which isn't going to work as those modules are in files and directories owned by root and 'go' is not running as root. By very carefully setting up timestamps it's usually possible to avoid this, but it's fragile.
Secondly if you do install a golang package, you can't compile an alternative copy in GOPATH, because the one in the (root-owned) GOROOT overrides it. Which is dumb and backwards.
Also, you should not be installing third party packages in `GOROOT`. If you do, then yes, you're going to be in some trouble.
[1] - https://wiki.archlinux.org/index.php/Go_Package_Guidelines
Then maintain two different and distinct `GOPATH` directories. One for development libraries and one for other stuff.
'var' is not the type inference, ':=' is the type inference.
Everyone is welcome to their opinion, but it'd be nice if they actually supported it with some explanation if they want to bandy it about in public.