Многие команды применяются к набору пакетов:
go action [packages]
Обычно [packages] представляет собой список путей импорта.
Путь импорта, который является корневым путем или начинается с . или .. элемента интерпретируется как путь к файловой системе и обозначает пакет в этом каталоге.
В противном случае путь импорта P обозначает пакет, найденный в каталоге DIR/src/P для некоторого DIR, указанного в переменной среды GOPATH (более подробно см. go help gopath).
Если пути импорта не указаны, действие применяется к пакету в текущем каталоге.
Есть четыре зарезервированных имени для путей, которые не должны использоваться для пакетов, которые будут собраны с помощью инструмента go:
- "main" обозначает пакет верхнего уровня в отдельном исполняемом файле.
- "all" распространяется на все пакеты, найденные во всех деревьях GOPATH. Например, 'go list all' перечисляет все пакеты в локальной системе. При использовании модулей "all" распространяется на все пакеты в основном модуле и их зависимости, в том числе зависимости, необходимые для тестирования любого из них.
- "std", как и все, распространяется только на пакеты в стандартной библиотеке Go.
- "cmd" распространяется на команды репозитория Go и их внутренние библиотеки.
Пути импорта, начинающиеся с "cmd/", соответствуют только исходному коду в репозитории Go.
Путь импорта - это шаблон, если он содержит один или несколько подстановочных знаков "...", каждая из которых может соответствовать любой строке, включая пустую строку и строки, содержащие косую черту. Такой шаблон распространяется на все каталоги пакетов, найденные в деревьях GOPATH с именами, соответствующими шаблонам.
Чтобы сделать общие шаблоны более удобными, существует два особых случая. Во-первых, /... в конце шаблона может соответствовать пустой строке, так что net/... соответствует и net, и пакетам в его подкаталогах, например, net/http. Во-вторых, любой разделенный косой чертой элемент шаблона, содержащий подстановочный знак, никогда не участвует в совпадении элемента "vendor" в пути к вендорному пакету, так что ./... не соответствует пакетам в подкаталогах ./vendor или ./mycode/vendor, но ./vendor/... и ./mycode/vendor/... соответствуют. Однако обратите внимание, что каталог с именем vendor, который сам содержит код, не является вендорным пакетом: cmd/vendor будет командой с именем vendor, и шаблон cmd/... соответствует ей.
В пути импорта также можно указать пакет для загрузки из удаленного хранилища. Запустите go help importpath для получения подробной информации.
Каждый пакет в программе должен иметь уникальный путь импорта. По договоренности, это организовано путем запуска каждого пути с уникальным префиксом, который принадлежит вам. Например, все внутренние пути в Google начинаются с 'google', а пути, обозначающие удаленные репозитории, начинаются с пути к коду, например, 'github.com/user/repo'.
Пакеты в программе не обязательно должны иметь уникальные имена пакетов, но есть два зарезервированных имени пакета со специальным значением. Имя main указывает на команду, а не на библиотеку. Команды встроены в бинарные файлы и не могут быть импортированы. Имя documentation указывает на документацию для не-Go программы в каталоге. Файлы в документации пакета игнорируются командой go.
В особом случае, если список пакетов представляет собой список файлов .go из одного каталога, команда применяется к одному синтезированному пакету, составленному именно из этих файлов, игнорируя все ограничения сборки в этих файлах и игнорируя любые другие файлы в каталоге.
Каталог и имена файлов, начинающиеся с "." или "_" игнорируются инструментом go, как и каталоги с именем "testdata".
Читайте также:
- Команды go: go get, загрузка и установка пакетов и зависимостей
- Команды go: go build, компиляция пакетов и зависимостей
- Команды go: go list, вывод списка пакетов или модулей
Комментариев нет:
Отправить комментарий