Как использовать Go Importer - PullRequest
2 голосов
/ 22 мая 2019

Я пытался использовать импортер для анализа типов, определенных в определенном пакете.Тем не менее, импортер всегда возвращает ошибку о том, что пакет не найден.Какую ошибку я делаю?

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 import, но она предоставляет очень ограниченную информацию.Я также пытался использовать пакет, который я импортирую здесь, но это не помогает.Однако, если я импортирую стандартный пакет go, такой как «время», я могу в настоящее время импортировать пакет.Почему это так?

1 Ответ

2 голосов
/ 22 мая 2019

Go importer не будет загружать пакет для вас. Вы можете использовать dep или go модули для обработки ваших зависимостей, но простым решением было бы загрузить пакет прямо в ваш gopath, используя go get :

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...