Руководство: Создание модуля Go
Это первая часть руководства, которое знакомит с несколькими фундаментальными
возможностями языка Go. Если вы только начинаете работать с Go, обязательно
ознакомьтесь с
Руководством: Начало работы с Go, которое знакомит
с командой go, модулями Go и очень простым кодом Go.
В этом руководстве вы создадите два модуля. Первый — это библиотека, которая предназначена для импорта другими библиотеками или приложениями. Второй — это приложение-вызыватель, которое будет использовать первый модуль.
Последовательность этого руководства включает семь кратких тем, каждая из которых иллюстрирует разные части языка.
- Создание модуля -- Напишите небольшой модуль с функциями, которые можно вызывать из другого модуля.
- Вызов вашего кода из другого модуля -- Импортируйте и используйте ваш новый модуль.
- Возврат и обработка ошибки -- Добавьте простую обработку ошибок.
- Возврат случайного приветствия -- Работайте с данными в слайсах (динамических массивах Go).
- Возврат приветствий для нескольких человек -- Храните пары ключ/значение в карте.
- Добавление теста -- Используйте встроенные возможности модульного тестирования Go для тестирования вашего кода.
- Компиляция и установка приложения -- Скомпилируйте и установите ваш код локально.
Предварительные требования
- Некоторый опыт программирования. Код здесь довольно простой, но полезно знать что-то о функциях, циклах и массивах.
- Инструмент для редактирования кода. Подойдет любой текстовый редактор, который у вас есть. Большинство текстовых редакторов имеют хорошую поддержку Go. Наиболее популярны VSCode (бесплатный), GoLand (платный) и Vim (бесплатный).
- Командный терминал. Go хорошо работает с любым терминалом на Linux и Mac, а также в PowerShell или cmd в Windows.
Начните модуль, который смогут использовать другие
Начните с создания модуля Go. В модуле вы собираете один или несколько связанных пакетов для дискретного и полезного набора функций. Например, вы можете создать модуль с пакетами, которые имеют функции для выполнения финансового анализа, чтобы другие разработчики финансовых приложений могли использовать вашу работу. Подробнее о разработке модулей см. в разделе Разработка и публикация модулей.
Код Go группируется в пакеты, а пакеты группируются в модули. Ваш модуль указывает зависимости, необходимые для запуска вашего кода, включая версию Go и набор других требуемых модулей.
По мере добавления или улучшения функциональности в вашем модуле вы публикуете новые версии модуля. Разработчики, пишущие код, который вызывает функции в вашем модуле, могут импортировать обновленные пакеты модуля и тестировать с новой версией перед использованием в продакшене.
-
Откройте командную строку и перейдите
cdв ваш домашний каталог.На Linux или Mac:
cd
На Windows:
cd %HOMEPATH%
-
Создайте каталог
greetingsдля исходного кода вашего модуля Go.Например, из вашего домашнего каталога используйте следующие команды:
mkdir greetings cd greetings
-
Запустите ваш модуль, используя
команду go mod init.Выполните команду
go mod init, указав путь вашего модуля -- здесь используйтеexample.com/greetings. Если вы публикуете модуль, это должен быть путь, откуда ваш модуль может быть загружен инструментами Go. Это будет репозиторий вашего кода.Подробнее о назначении имени вашему модулю с помощью пути модуля см. в разделе Управление зависимостями.
$ go mod init example.com/greetings go: creating new go.mod: module example.com/greetings
Команда
go mod initсоздает файл go.mod для отслеживания зависимостей вашего кода. Пока что файл включает только имя вашего модуля и версию Go, которую поддерживает ваш код. Но по мере добавления зависимостей файл go.mod будет перечислять версии, от которых зависит ваш код. Это делает сборки воспроизводимыми и дает вам прямой контроль над тем, какие версии модулей использовать. - В текстовом редакторе создайте файл, в котором будете писать ваш код, и назовите его greetings.go.
-
Вставьте следующий код в ваш файл greetings.go и сохраните файл.
package greetings import "fmt" // Hello returns a greeting for the named person. func Hello(name string) string { // Return a greeting that embeds the name in a message. message := fmt.Sprintf("Hi, %v. Welcome!", name) return message }Это первый код для вашего модуля. Он возвращает приветствие любому вызывающему, который его запросит. Вы напишете код, который вызывает эту функцию, на следующем шаге.
В этом коде вы:
-
Объявляете пакет
greetingsдля сбора связанных функций. -
Реализуете функцию
Helloдля возврата приветствия.Эта функция принимает параметр
name, тип которогоstring. Функция также возвращаетstring. В Go функция, имя которой начинается с заглавной буквы, может быть вызвана функцией не из того же пакета. Это известно в Go как экспортируемое имя. Подробнее об экспортируемых именах см. в разделе Экспортируемые имена в туре по Go.
-
Объявляете переменную
messageдля хранения вашего приветствия.В Go оператор
:=является сокращением для объявления и инициализации переменной в одной строке (Go использует значение справа, чтобы определить тип переменной). Более длинным способом вы могли бы написать это так:var message string message = fmt.Sprintf("Hi, %v. Welcome!", name) -
Используете
функцию Sprintfпакетаfmtдля создания сообщения-приветствия. Первый аргумент — это строка форматирования, иSprintfподставляет значение параметраnameвместо глагола форматирования%v. Вставка значения параметраnameзавершает текст приветствия. - Возвращаете форматированный текст приветствия вызывающей стороне.
-
Объявляете пакет
На следующем шаге вы вызовете эту функцию из другого модуля.