Паттерны в приложениях Go
Go – это язык программирования с открытым исходным кодом, поддерживаемый Google, и он пользуется популярностью в сообществе разработчиков в течение многих лет.
В этой статье собраны некоторые шаблоны, которые обычно используются в проектах с открытым исходным кодом Go, а также советы, основанные на моих знаниях и опыте.
Паттерны
“cmd”
Большинство приложений Go используют cmd
каталог для включения нескольких небольших приложений.
“testdata”
Написание модульного теста – одна из важных вещей, которые разработчики должны делать, чтобы код был правильным и качественным. Обычно мы пишем тесты с вводом в виде файлов (JSON, CSV и т. д.). Обычный способ сделать это – создать testdata
каталог, соответствующий тестовым файлам.
“e2e”
Иногда, помимо модульного теста, нам нужен тест e2e
или интеграционный тест (например, тест интеграции между обработчиками API и хранилищем, например MySQL / Redis). Чтобы организовать эти тестовые примеры для облегчения сопровождения e2e
или test/e2e
. Каталог можно рассматривать как состоящий из нескольких сквозных тестовых примеров. Этот способ также помогает разработчикам запускать модуль / интеграцию отдельно на локальном этапе или этапе CI.
_ struct {}
При создании структуры в Go мы можем дополнительно объявить поля с ключами, чтобы обеспечить постоянное присоединение к полям ключей и разрешить отсутствие нового поля без нарушения изменений, _ struct{}
можно использовать в качестве первого поля.
Пример:
package main
type Product struct {
_ struct{}
ID string
Name string
OptionalField bool
}
func main() {
// compile ok
_ = &Product{ID: "1", Name: "iPhone 13"}
// compile failed
// _ = &Product{"1", "iPhone 13"}
}
Эта первая часть содержит небольшие шаблоны, предназначенные для структурирования приложения Go. В следующих частях мы рассмотрим некоторые другие шаблоны при проектировании библиотеки Go или sdk.