2

I'm toying around with converting a project at work to be a module. My understanding is it should make deploys much easier since $GOPATH won't have to be set up properly.

In my existing project I ran go mod init <project path>, and checked in go.mod and go.sum. As a test, I opened a new terminal, unset GOPATH, cloned my project into /tmp, go build, and everything worked great but it left me with questions. I expected my imports to be downloaded into a vendor folder but nothing.

Where does go modules put the packages it has to go get when no $GOPATH is set?

4

1 回答 1

3

From the modules help:

When using modules, GOPATH is no longer used for resolving imports. However, it is still used to store downloaded source code (in GOPATH/pkg/mod) and compiled commands (in GOPATH/bin).

So in your case if GOPATH is unset it will use the default GOPATH ($HOME/go/) and thereby store the cached imports in: $HOME/go/pkg/mod

于 2018-10-12T09:10:03.050 回答