使用模块,无法在项目中引用新安装的包

Using modules, newly installed package cannot be referenced within project

go版本go1.11.4darwin/amd64 GOPATH 已取消设置但之前设置为 $HOME/Development/go

项目路径在$HOME/code/

我能够使用命令

成功(至少没有错误)安装go-sql-driver/mysql包

go get github.com/go-sql-driver/mysql@v1

当我在导入语句中包含对该包的引用时

import(
_ "github.com/go-sql-driver/mysql")

在我的代码中我看到错误

could not import github.com/go-sql-driver/mysql (can’t find import: “github.com/go-sql-driver/mysql”)

我在我的项目根目录中有 运行 go mod init,它创建了一个 go.mod 文件。当我 运行 go get 命令时,我看到一个 require 语句被添加到包的那个文件中。但似乎包的文件安装在默认的 $HOME/go 目录中(因为我已经取消设置 GOPATH)。

我是否应该做不同的事情,以便我的导入语句可以找到新安装的包?使用 mod 规则不应该将所有包都安装在项目路径中的某个地方吗?

Should I be doing things differently so that my import statement can find the newly installed package?

没有。使用 modules 根本不需要预先安装软件包。

Using modules shouldn't all the packages be installed in the project path somewhere?

没有。它们以某种格式下载到某处并从该位置使用,但它们不像 go get.

的旧 GOPATH 变体那样 "installed"

显示 go env 的输出以及 go mod 供应商生成的内容。

我很确定我做错了。在仔细参考 golang modules wiki 中记录的以下步骤后,我能够解决此问题。总结是没有必要通过 'go get' "install" 一个包。相反,只需确保您的项目已初始化为使用 'go mod init' 命令使用模块,然后在 import 语句中包含包名称。下一个构建事件将下拉包及其所有依赖项。