go - 如何使用 go 导入器

标签 go

我一直在尝试使用导入器来解析特定包中定义的类型。但是,导入器总是返回一个错误,说找不到包。我犯了什么错误?

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 导入器不会为您下载包。您可以使用 depgo 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/

相关文章:

go - 在 Go 中强制映射类型

xml - 运行基准测试时 XML 解析缓慢

multithreading - 如何在http中使用多个进程

戈朗,围棋 : implicitly calling interface function?

string - Go中数字(字符串类型)的高效反向索引

windows - 有人可以建议为什么即使 CGO_ENABLED=0,从源代码 (1.4) 构建的 Go 也会因为 GCC 编译错误而失败

json - 从 Golang 调试 JSON 错误

arrays - Golang-无效的数组绑定(bind)

date - Go 中的最大 time.Time 是多少?

networking - 如何从本地接口(interface)获取所有地址和掩码?