Sobes.tech
Back to questions
Senior
4

func(d *Data)GetViews(key int, chechDay time.Time) (int, int, err) { d.mu.Lock() defer d.mu.Unlock() infoStr, ok := d.st[key] if !ok { return 0, fmt.Errorf("article not found") } return (infoStr.day, infoStr.count, nil) }

Companies where asked
А7

Answer from AI

sobes.tech AI

В представленном коде есть несколько ошибок и неточностей:

  1. Сигнатура функции некорректна: возвращаемые значения указаны как (int, int, err), где err должен быть типа error.
  2. В return 0, fmt.Errorf("article not found") возвращается два значения, а ожидается три.
  3. В return (infoStr.day, infoStr.count, nil) скобки лишние, и infoStr.day возможно не совпадает с типом chechDay.

Исправленный вариант функции может выглядеть так:

func (d *Data) GetViews(key int, checkDay time.Time) (int, int, error) {
    d.mu.Lock()
    defer d.mu.Unlock()

    infoStr, ok := d.st[key]
    if !ok {
        return 0, 0, fmt.Errorf("article not found")
    }

    // Предполагаем, что infoStr.day имеет тип time.Time
    if !infoStr.day.Equal(checkDay) {
        return 0, 0, fmt.Errorf("data for the specified day not found")
    }

    return infoStr.dayViews, infoStr.count, nil
}

Здесь:

  • infoStr.dayViews — количество просмотров за день,
  • infoStr.count — общее количество просмотров,
  • функция возвращает ошибку, если ключ не найден или дата не совпадает.

Также важно, что мьютекс mu защищает доступ к карте st для потокобезопасности.