> Что такое пагинация? (Go)
Уровень: junior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: InDrive
Стек: Go
> Пример ответа
Пагинация - это механизм постраничного разделения большого набора данных на небольшие порции (страницы) для последовательной загрузки. В бэкенд-разработке на Go пагинация обычно реализуется через SQL-запросы с LIMIT и OFFSET (или курсорную пагинацию) и передаётся клиенту в виде параметров запроса, например ?page=2&limit=20.
Пример реализации на Go с использованием database/sql:
GOtype PaginationParams struct {Page int `json:"page"`Limit int `json:"limit"`}func GetUsers(db *sql.DB, params PaginationParams) ([]User, int, error) {offset := (params.Page - 1) * params.Limit// Получаем общее количество записей для вычисления количества страницvar total interr := db.QueryRow("SELECT COUNT(*) FROM users").Scan(&total)if err != nil {return nil, 0, err}// Запрос с пагинациейrows, err := db.Query("SELECT id, name FROM users ORDER BY id LIMIT $1 OFFSET $2", params.Limit, offset)if err != nil {return nil, 0, err}defer rows.Close()var users []Userfor rows.Next() {var u Userif err := rows.Scan(&u.ID, &u.Name); err != nil {return nil, 0, err}users = append(users, u)}return users, total, nil}
Клиент получает ответ с полями data, total, page, limit и totalPages, что позволяет ему отобразить навигацию. Важно учитывать: при использовании OFFSET на больших объёмах данных производительность падает - в таких случаях предпочтительнее курсорная пагинация (по WHERE id > last_seen_id).
> Похожие задачи по Go
Что делать, если после добавления индекса селективность низкая и запрос остается медленным?
Какие стратегии пагинации можно использовать вместо LIMIT OFFSET?
Зачем добавлять контекст в запросы к базе данных?
Как исправить SQL запрос, который собирает строку без контекста?
> Похожие задачи по backend
Что делать, если после добавления индекса селективность низкая и запрос остается медленным?
Какие стратегии пагинации можно использовать вместо LIMIT OFFSET?
Зачем добавлять контекст в запросы к базе данных?
Как исправить SQL запрос, который собирает строку без контекста?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью