Руководство: Создание модуля Go

Это первая часть руководства, которое знакомит с несколькими фундаментальными возможностями языка Go. Если вы только начинаете работать с Go, обязательно ознакомьтесь с Руководством: Начало работы с Go, которое знакомит с командой go, модулями Go и очень простым кодом Go.

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

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

  1. Создание модуля -- Напишите небольшой модуль с функциями, которые можно вызывать из другого модуля.
  2. Вызов вашего кода из другого модуля -- Импортируйте и используйте ваш новый модуль.
  3. Возврат и обработка ошибки -- Добавьте простую обработку ошибок.
  4. Возврат случайного приветствия -- Работайте с данными в слайсах (динамических массивах Go).
  5. Возврат приветствий для нескольких человек -- Храните пары ключ/значение в карте.
  6. Добавление теста -- Используйте встроенные возможности модульного тестирования Go для тестирования вашего кода.
  7. Компиляция и установка приложения -- Скомпилируйте и установите ваш код локально.

Предварительные требования

Начните модуль, который смогут использовать другие

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

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

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

  1. Откройте командную строку и перейдите cd в ваш домашний каталог.

    На Linux или Mac:

    cd
    

    На Windows:

    cd %HOMEPATH%
    
  2. Создайте каталог greetings для исходного кода вашего модуля Go.

    Например, из вашего домашнего каталога используйте следующие команды:

    mkdir greetings
    cd greetings
    
  3. Запустите ваш модуль, используя команду 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 будет перечислять версии, от которых зависит ваш код. Это делает сборки воспроизводимыми и дает вам прямой контроль над тем, какие версии модулей использовать.

  4. В текстовом редакторе создайте файл, в котором будете писать ваш код, и назовите его greetings.go.
  5. Вставьте следующий код в ваш файл 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 завершает текст приветствия.
    • Возвращаете форматированный текст приветствия вызывающей стороне.

На следующем шаге вы вызовете эту функцию из другого модуля.

GoRu.dev Golang на русском

На сайте представлена адаптированная под русский язык документация языка программирования Golang