Зачем нужна папка repository

«Зачем нужна папка repository» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Папка repository в Go-проектах обычно используется для хранения кода, который отвечает за взаимодействие с данными (базами данных, API и т.д.). Она абстрагирует логику доступа к данным от бизнес-логики, следуя принципам чистой архитектуры.

Пример структуры:

// repository/user_repository.go
type UserRepository interface {
    GetByID(id int) (*User, error)
}

type userRepository struct {
    db *sql.DB
}

func NewUserRepository(db *sql.DB) UserRepository {
    return &userRepository{db: db}
}

func (r *userRepository) GetByID(id int) (*User, error) {
    // реализация запроса к БД
}

Преимущества:

  • Изоляция кода работы с данными
  • Проще тестировать (можно мокать репозиторий)
  • Гибкость при смене хранилища данных