Ошибка в том, что вы должны указать пакет по пути импорта, а не по отношению к папке src
. Поэтому просто обратитесь к вашей переменной version
, например main.version
. Подробнее см. Как установить переменную пакета с помощью -ldflags -X в сборке Golang .
Итак, перейдите к %GOPATH%/src/wtf
и создайте его с помощью следующей команды:
go build -ldflags "-X main.version=1.0.0.1234" wtf.go
(Или, если у вас нет исходных файлов с другими пакетами в папке src/wtf
, вы можете не указывать имя исходного файла.)
Это поместит wtf.exe
в текущую папку. Запустив его, вы получите:
Version 1.0.0.1234
Обратите внимание, что go install
не требуется. Это создаст ваше приложение и поместит исполняемый двоичный файл в %GOPATH%/bin
, но у него не будет установлен version
!
Если вы хотите использовать go install
, вы снова должны предоставить флаги. Выполните следующую команду в папке %GOPATH%/src/wtf
:
go install -ldflags "-X main.version=1.0.0.1234"
Также обратите внимание, что go install
не требует, чтобы вы запускали go build
до, и вам не нужно запускать go install
после go build
. Подробнее см. Что такое сборка сборки?