Узнайте о внутренних, основных, библиотечных особенностях, особенностях поставщика и тестовых данных.

Специальные пакеты

Основной пакет

Каждая запускаемая программа должна содержать пакет с именем main и функцию с именем main.

После того, как ваша программа будет скомпилирована, и когда вы захотите запустить ее, будет вызвана основная функция этого пакета, а основная функция будет все координировать впоследствии.

В некоторых программах основная функция обычно называется командой или cmd.

Внутренний пакет

Называя пакет внутренним, он еще больше скрывает его внутреннюю часть, обеспечивает большую инкапсуляцию.

Когда вы называете пакет внутренним, он может быть импортирован только из пакетов его родительского каталога. Если вы поместите в более глубокие подпапки, на один шаг вверх, его родительские пакеты смогут получить к нему доступ.

Внутренний пакет используется для того, чтобы сделать определенные пакеты неимпортируемыми.

→ Подробнее здесь.

Пакеты библиотеки

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

Без точки входа ваш код может использоваться другими пакетами только как библиотека.

Пакеты библиотеки не запускаются.

Например, многие пакеты в стандартной библиотеке Go являются пакетами библиотек и не являются исполняемыми программами. Однако вы можете использовать их в исполняемой программе, у которой есть точка входа (помните основную функцию пакета?).

Специальные справочники

Это не имена пакетов, а только имена каталогов. Когда вы помещаете в них код, они по-разному интерпретируются многими инструментами или программами go.

Каталог поставщиков

Начиная с Go 1.5, когда вы называете каталог как vendor, это позволяет вам помещать зависимости внешних пакетов в каталог вашего приложения. Многие инструменты Go не касаются содержимого этого каталога.

Например, я использую каталог vendor в корне моего проекта для сохранения зависимостей внешних пакетов.

Это позволяет вам импортировать внешний пакет из каталога vendor.

Например, когда вы набираете import "github.com/justinas/alice”, компилятор Go ищет пакет внутри каталога поставщика. Вам не нужно вводить: import "vendor/github.com/justinas/alice", он автоматически преобразуется в каталог поставщиков. Многие инструменты зависимостей go также используют папку vendor.

Также есть каталог с именем testdata и т. д. Каталоги Testdata пропускаются инструментами go. Здесь вы можете сохранить образцы тестирования, чтобы использовать их в тестах кода.

Хорошо, на этом пока все. Спасибо, что дочитали до сих пор.

Давайте оставаться на связи: