go install 导入后无法识别包

After go install the import doesn't recognize the package

嗨,我是 Golang 的新手,安装后我想在我的项目中使用下一个包: https://github.com/gin-gonic/gin

创建项目后,我执行了下一个命令来安装 gingonic:

go get -u github.com/gin-gonic/gin

但是导入在我的项目中无法识别,我知道这与我的 GOROOT 相关,但我无法解决问题。

接下来是我的 Go 环境变量:

GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/rpantoja/Library/Caches/go-build"
GOENV="/Users/rpantoja/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/rpantoja/go/pkg/mod"
GONOPROXY="github.com/mercadolibre"
GONOSUMDB="github.com/mercadolibre"
GOOS="darwin"
GOPATH="/Users/rpantoja/go"
GOPRIVATE="github.com/mercadolibre"
GOPROXY="http://goregistry.furycloud.io/"
GOROOT="/usr/local/Cellar/go/1.15/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.15/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/gz/zfy97n595rs5w_t0dr9wr29dzzxvs4/T/go-build960054223=/tmp/go-build -gno-record-gcc-switches -fno-common"

我的项目是这样配置的:

安装包后:

设置带有模块的新 Go 项目的步骤:

  1. 已安装 Go。最好是最新版本,最好 >= v1.13,默认使用 Go 模块。对于 go1.11 及更高版本,您必须执行一些额外的步骤才能启用 Go 模块。
  2. 为您的项目创建一个新文件夹。最好不要在 GOPATH 中。默认情况下 GOPATH 是 ~/go,所以创建你自己的项目文件夹,例如mkdir ~/projects 然后 mkdir ~/projects/myproject.
  3. 所有进一步的命令都来自新项目根目录 运行,所以最好切换到那里:cd ~/projects/myproject
  4. 在新创建的文件夹 运行 go mod init projectPath 中,其中 projectPath 应该是您未来 git 存储库的 URL(例如 github.com/myname/myproject ).这将在当前文件夹中创建 go.mod 文件。它将包含您在 go mod init 中使用的模块名称和当前安装的 go 版本作为最低版本。 (暂时不要担心,它不会妨碍你。)如果你不打算发布你的项目,你可以给你的项目起任何名字。但是,如果它与另一个包或模块名称发生冲突,你就有麻烦了。
  5. 现在您可以 运行 go get github.com/gin-gonic/gin(不要使用 -u,这很危险,因为它会更新所有子依赖项,而不是使用 gin 开发人员使用的依赖项)。这应该根据要求将 github.com/gin-gonic/gin 添加到您的 go.mod 文件中。如果要更新依赖项,只需再次调用 go get depPath 即可。它会将 go.mod 文件中的依赖版本更新为可用的最新版本。如果您想 up-/downgrade 到特定版本,请使用 go get depPath@vX.Y.Z.
  6. 创建您的 main.go 并在其中使用 github.com/gin-gonic/gin
  7. 使用 go mod tidy 删除所有未使用的导入或将缺失的添加到 go.mod。 (通常您不需要编辑 go.modgo mod tidy 会为您完成。)它还会整理您的 go.sum 文件,该文件包含所有依赖项的校验和。您可以查看该文件,但(通常)永远不必编辑它。 go mod tidy 会为您完成。
  8. 在 Goland 中,最重要的是确保 Go modules integration 已启用。其他设置应该默认是正确的。
  9. 如果你仍然有依赖问题,你可以试试go clean -modcache。它将清除整个本地模块缓存,因此您需要重新下载所有模块。如果模块缓存不知何故搞砸了,这有时会有所帮助。不过,正常情况下不应该发生。

希望这对您有所帮助。如果没有,请告诉我,以便我可以添加缺少的部分。

你应该只使用

go mod init 'yourmodulename' (e.g. go mod init github.com/smsa/testproject)

然后获取(下载)您的包

go get 'yourpckagename' (e.g. go get github.com/gin-gonic/gin)