我一直在尝试使用导入器来解析特定包中定义的类型。但是,导入器总是返回一个错误,说找不到包。我犯了什么错误?
package main
import (
"fmt"
"go/importer"
)
func main() {
pkg, err := importer.Default().Import("github.com/onsi/ginkgo")
if err != nil {
panic(err)
}
fmt.Println(pkg)
}
我尝试阅读 go importer 文档,但它提供的信息非常有限。我也尝试使用我在这里导入的包,但它没有帮助。但是,如果我导入一个go标准包,比如“时间”,我目前可以导入这个包。这是为什么?
最佳答案
Go 导入器不会为您下载包。您可以使用 dep或 go modules处理你的依赖关系,但一个简单的解决方法是使用 go get 将包直接下载到你的 gopath :
go get -u github.com/onsi/ginkgo
在那之后,go importer 将工作,你的代码输出应该是:
package ginkgo ("github.com/onsi/ginkgo")
[编辑] 使用 Go 模块:
有很多关于它的教程,但快速而肮脏的方法是在你的包目录中:
$ GO111MODULE=on go mod init
$ GO111MODULE=on go mod tidy
这将检查您的项目并下载所有包。要在 go.mod
上安装特定包,您可以使用:
$ go install github.com/onsi/ginkgo
关于go - 如何使用 go 导入器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56259230/