Go 1.12 Примечания к выпуску (февраль 2019 г.)
Модули
Директива go в файле go.mod теперь указывает версию
язык, используемый файлами в этом модуле. Будет установлено значение
текущая версия (перейти к 1.12), если нет существующей версии. Если идти
директива для модуля указывает версию, более новую, чем набор инструментов в
используйте команду go, чтобы попытаться собрать пакеты независимо, и
заметит несоответствие, только если эта сборка не удалась.
Это измененное использование директивы go означает, что если вы используете Go 1.12 для
построить модуль, записав таким образом go 1.12 в файл go.mod, вы будете
выдается ошибка при попытке собрать тот же модуль с Go 1.11
через Go 1.11.3. Go 1.11.4 или новее будет работать нормально, как и релизы
старше Го 1.11. Если вы должны использовать Go с 1.11 по 1.11.3, вы можете
чтобы избежать проблемы, установите для языковой версии 1.11, используя
Go 1.12 go tool, с помощью go mod edit -go = 1.11.
$ go help go.mod
The go.mod file itself is line-oriented, with // comments but
no /* */ comments. Each line holds a single directive, made up of a
verb followed by arguments. For example:
module my/thing
go 1.12
require other/thing v1.0.2
require new/thing/v2 v2.3.4
exclude old/thing v1.2.3
replace bad/thing v1.4.5 => good/thing v1.4.5
The verbs are
module, to define the module path;
go, to set the expected language version;
require, to require a particular module at a given version or later;
exclude, to exclude a particular module version from use; and
replace, to replace a module version with a different module version.
Возможное решение вашей проблемы было впервые представлено в Go1.12: go.mod
глагол go
, чтобы установить ожидаемую языковую версию.
UPDATE:
Комментарий: я пытался использовать предложенную команду: go mod edit -go = 1.11 I
получил ошибку: флаг предоставлен, но не определен: -го я отредактировал вручную
добавить go 1.11 прямо под моим объявлением модуля во всех файлах go.mod, это
не работал. -
user2995358
Ваши результаты ожидаются. Как я объяснил ранее и в документации говорится, что go.mod
глагол go
был впервые введен в Go1.12.
Например, ожидаемые результаты,
$ go version
go version go1.11.10 linux/amd64
$ go mod edit -go=1.11
flag provided but not defined: -go
usage: go mod edit [editing flags] [go.mod]
Run 'go help mod edit' for details.
$
$ go version
go version go1.12.5 linux/amd64
$ go mod edit -go=1.11
$
Прочитайте документацию:
$ go version
go version go1.11.10 linux/amd64
$ go1.11 help modules
Preliminary module support
Go 1.11 includes preliminary support for Go modules,
including a new module-aware 'go get' command.
We intend to keep revising this support, while preserving compatibility,
until it can be declared official (no longer preliminary),
and then at a later point we may remove support for work
in GOPATH and the old 'go get' command.
$
$ go version
go version devel +004fb5cb8d Fri May 3 03:49:11 2019 +0000 linux/amd64
$ go help modules
Module support
Go 1.13 includes official support for Go modules,
including a module-aware 'go get' command.
Module-aware mode is active by default.
$
Go 1.11 включает только предварительную поддержку модулей Go. Go 1.13 включает полную официальную поддержку модулей Go.
Почему вы ожидаете, что в Go1.11 все будет работать без сбоев только с предварительной поддержкой?