@dyedgrey $GOROOT is where the toolchain is installed. $GOPATH is effectively where your user cache is, typically ~/go. Generally, these should be unset and let the defaults happen. You can run `go env` to see what it knows. You should add $GOROOT/bin to your $PATH and could add $GOPATH/bin as well.
As for go.mod, this is the "new" way of developing go apps. Used to be you needed to put them under $GOPATH but you actually shouldn't do that now. I put everything under ~/src myself.