Ответ
В Go принято организовывать структуру проекта по функциональным слоям. Слой работы с БД обычно размещают в:
internal/repository/- для репозиториев (основной вариант)pkg/repository/- если код должен быть переиспользуемымdb/илиstorage/- в простых проектах
Пример структуры:
project/
internal/
repository/
user_repository.go
order_repository.go
pkg/
db/
connection.go
Код репозитория обычно выглядит так:
package repository
type UserRepository struct {
db *sql.DB
}
func (r *UserRepository) GetByID(id int) (*User, error) {
// запрос к БД
}
Важно отделять слой репозитория от бизнес-логики (service layer) и транспорта (API/handlers).