Создание библиотеки Golang
В этой статье вы узнаете, как создавать свои собственные библиотеки с помощью go mods и импортировать их в необходимые проекты.
Сначала позвольте сначала дать вам небольшое представление о том, что такое модули.
“Модуль - это набор пакетов Go, хранящихся в дереве файлов с файлом go.mod в его корне. Файл go.mod определяет путь к модулю модуля, который также является путем импорта, используемым для корневого каталога, и требования к его зависимостям, которые являются другими модулями, необходимыми для успешной сборки.”
Другими словами, модуль go поможет нам получить зависимости для вашего проекта без необходимости включать пакет поставщика. Используя модули golang, наш проект становится более масштабируемым и удобным в сопровождении, потому что, если будет опубликована новая версия некоторых наших библиотек, мы можем легко обновить ее, сохранив новую версию в наших реализациях.
Теперь подумайте об одном практическом примере: мы создаем службу API REST, которая использует некоторые облачные службы, затем мы решили использовать фреймворк, чтобы упростить процесс API, и решили использовать внешний SDK для подключения к облачным службам, который поможет нам не создавать весь код с нуля, потому что мы собираемся использовать библиотеки Golang провайдера и очень хороший фреймворк Rest API. Чтобы справиться с этим, мы собираемся использовать go mod для обработки зависимостей.
Тогда как мы можем импортировать зависимости в проект? Способ импорта зависимостей в ваш проект golang заключается в выполнении следующей команды «go install the provider.com/repo/package», которая получит библиотеку и добавит строку, связанную с библиотекой, и используемую версию в наш go.mod, и мы сможем использовать его в нашем проекте.
Создание собственной библиотеки
На данный момент вы знаете о go mod, но теперь мы поговорим о том, как мы можем создавать наши собственные библиотеки и как мы можем использовать их в разных проектах.
Иногда мы создаем программные решения, которые могли бы помочь нам справиться с общим поведением в различных службах, затем мы могли бы перенести эти коды в библиотеку и использовать их в нужных нам службах. Но как нам это сделать? готово, давайте начнем.
Что нам понадобится?
- Создайте репозиторий lib.
- На данный момент мы собираемся использовать Github для хранения нашего базового кода, который поможет нам управлять версиями библиотеки.
- Напишите код библиотеки.
- В этом уроке мы просто определим две функции для вычисления площади фигур, в данном случае круга и прямоугольника.
- Напишите основной код приложения.
- Здесь мы будем использовать код библиотеки.
Создайте репозиторий lib
создайте папку репозитория:
mkdir calculate-lib-example
После этого нам нужно отправить код в вашу учетную запись github, чтобы создать репозиторий.
echo “# calculate-lib-example” >> README.md
git init
git add README.md
git commit -m “first commit”
git branch -M main
git remote add origin git@github.com:{accountName}/calculate-lib-example.git
git push -u origin main
Теперь, внутри корневой папки, вы должны добавить следующие папки и файлы golang (сохраните их, pti на данный момент)
-- pkg
------ shapes
---------- area.go
Напишите код библиотеки
Первое, что нам нужно, это добавить файл go.mod, для этого нам нужно выполнить следующее:
go mod init github.com/{userName}/calculate-lib-example
После запуска мы увидим новый файл go.mod, который автоматически генерируется в корневой папке со следующим содержимым:
module github.com/{userName}/calculate-lib-example
go 1.19
С помощью этого файла мы указываем, что используем модули go в нашем проекте.
Теперь в файле area.go мы собираемся определить две функции для вычисления площадей, одну для прямоугольников, а другую для кругов.
package shapes
import "math"
func GetRectangleArea(width, height float32) float32 {
return width * height
}
func GetCircleArea(radius float32) float32 {
return math.Pi * radius * radius
}
После выполнения всего вышеперечисленного остается только зафиксировать изменения в вашем репозитории GitHub.
git add *
git commit -m "your comment"
git push origin main
Напишите основной код приложения
Для этой части мы могли бы определить структуру проекта на основе следующего:
-- calculator
------ cmd
--------- main.go
Второй шаг - создать файл go.mod, выполнив:
go mod init github.com/{userName}/calculator
После этого нам нужно установить нашу зависимость:
go install github.com/{userName}/calculate-lib-example
После выполнения команды мы увидим следующую строку в нашем файле go.mod
module github.com/josue/calculator
go 1.19
require github.com/{userName}/calculate-lib-example v0.0.0-20220903214241-51d23a6471fe
Готово, теперь мы можем использовать библиотеку так, как обычно используем другие.
package main
import (
"fmt"
"github.com/isparo/calculate-lib-example/pkg/shapes"
)
func main() {
fmt.Println("calling external lib")
res := shapes.GetCircleArea(3)
fmt.Println(res)
}
Легко, не так ли?, Надеемся, что после прочтения этой статьи у вас появится какая-то идея, как начать писать свои библиотеки кода, когда они вам понадобятся.