2013-08-05 2 views
2

Я пытаюсь понять идею соглашения об именах пакетов в Go. установлены Большинство пакетов и импортируются как что-то вроде:Какова идея соглашения об именовании пакетов Go?

import "github.com/howeyc/fsnotify" 

я получаю идею, что имена пакетов должны быть уникальными, но я не вижу смысла использовать сайт github.com. Почему бы просто не использовать author/package? Нравится:

import "howeyc/fsnotify" 

Это вряд ли когда-либо столкнется. Или какая-то другая «более короткая» стратегия? Это потому, что он «просто работает» с go get? Или есть еще одна причина?

+0

Это, по большей части, об именах, в которых размещаются ваши пакеты, чтобы вы могли использовать вилки и/или знать, откуда берутся дополнительные пакеты (иначе, без центрального репо, это была бы трудная задача!). – elithrar

ответ

8

Вы можете использовать howeyc/fsnotify, если хотите. Когда используется github.com/howeyc/fsnotify, понятно, что пакет размещен на Github. Другие репозитории также работают.

Причина в том, что это упрощает поиск и установку зависимостей с помощью go get. В противном случае вам придется вручную удовлетворить зависимости. И поскольку forking repos довольно распространен в мире с открытым исходным кодом, у вас может быть модифицированная версия от того же автора. Таким образом, это помогает отличить то, от чего зависит ваш проект.

1

Download and install packages and dependencies

Использование:

go get [-d] [-fix] [-u] [build flags] [packages] 

Получить загружает и устанавливает пакеты, названные импортными путями, вместе с их зависимостями.

При проверке или обновлении пакета, поиск ищет ветку или тег, соответствующий локально установленной версии Go. Главное правило заключается в том, что если в локальной установке установлена ​​версия «go1», найдите поиск ветки или тега с именем «go1». Если такой версии не существует, она извлекает самую последнюю версию пакета.

Подробнее об указании пакетов см. «go help packages».

Подробнее о том, как «go get» находит исходный код для загрузки, см. «go help remote».

Путь импорта поддерживает команду go get. Пути, обозначающие удаленные репозитории, начинаются с пути к коду. Запустите команду go help remote.

Смежные вопросы