Ответ
Папка 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) {
// реализация запроса к БД
}
Преимущества:
- Изоляция кода работы с данными
- Проще тестировать (можно мокать репозиторий)
- Гибкость при смене хранилища данных