Sobes.tech
Middle+

Écrire un problème en langage Go — section pratique (problèmes de la vie réelle du développeur, sans algorithmes) : améliorer ou corriger un service. Durée — 1,5 heures.

sobes.tech IA

Réponse de l'IA

Для практической задачи на Go можно предложить доработать HTTP-сервис, который обрабатывает запросы и взаимодействует с базой данных. Например, добавить поддержку пагинации и фильтрации в существующий API, а также исправить баги с обработкой ошибок.

Пример задачи:

  • В сервисе есть endpoint /users, который возвращает всех пользователей без фильтров и пагинации.
  • Нужно добавить параметры page и limit для пагинации, а также параметр status для фильтрации по статусу пользователя.
  • Обеспечить корректную обработку ошибок и возвращать понятные сообщения клиенту.

Пример кода обработки параметров:

func getUsersHandler(w http.ResponseWriter, r *http.Request) {
    pageStr := r.URL.Query().Get("page")
    limitStr := r.URL.Query().Get("limit")
    status := r.URL.Query().Get("status")

    page, err := strconv.Atoi(pageStr)
    if err != nil || page < 1 {
        page = 1
    }
    limit, err := strconv.Atoi(limitStr)
    if err != nil || limit < 1 {
        limit = 10
    }

    users, err := fetchUsersFromDB(page, limit, status)
    if err != nil {
        http.Error(w, "Internal Server Error", http.StatusInternalServerError)
        return
    }

    json.NewEncoder(w).Encode(users)
}

Такой пример позволяет проверить навыки работы с HTTP, параметрами запроса, базой данных и обработкой ошибок.