Импортируемый пакет не имеет .mod файла. Как использовать этот пакет?

У меня go23

Я оформляю свои программы в виде go-модуля.

Однако, в одной из моих программ, потребовалось импортировать пакет github.com/lxn/walk.

Этот пакет не имеет go.mod файла так как был написан до введения модулей в golang.

Обычный go get и go get -u его скачивают, но добавить в мой проект не дают.

Как я могу использовать этот пакет в своем проекте? Как правильно его испортировать?

go get добавил пакет в pkg

а вот что говорит среда когда я пытаюсь прописать импорт

когда пытаюсь собрать именно пример из README то получаю

package github.com/udonetsm/test
        imports github.com/lxn/walk: build constraints exclude all Go files in /home/active/go/pkg/mod/github.com/lxn/[email protected]

В то время как сожержимое /home/active/go/pkg/mod/github.com/lxn/[email protected] на первом скриншоте


Ответы (1 шт):

Автор решения: Pak Uula

Судя по скриншотам, вы работаете в Линуксе. Библиотека github.com/lxn/walk предназначена исключительно для Windows, во всех исходниках стоит тег сборки

// +build windows

то есть файл включается в сборку только если выставлен тег windows.

Вам нужно собирать приложение Windows:

GOOS=windows GOARCH=amd64 go build

Я проверил с приложением из README - собирает EXE файл. Запустить, разуемеется, не получается, так как это виндовый исполнимый файл ))

Дабы компилятор в VSCODE не ругался, надо в файл .vscode/settings.json добавить :

    "go.toolsEnvVars": {
        "GOOS": "windows",
        "GOARCH": "amd64"
    }

Команда go build -tags windows не сработает, так как по этому тегу подтянутся исходники из стандартной библиотеки, и возникнут кучи конфликтов с дубликатами имён, например

/usr/local/go/src/internal/goos/zgoos_windows.go:7:7: GOOS redeclared in this block
        /usr/local/go/src/internal/goos/zgoos_linux.go:7:7: other declaration of GOOS

Поэтому только GOOS=windows, только кросс-компиляция.

→ Ссылка