GetData возвращает данные из getter, страхуя кэшом в случае ошибки. Проблема: getter может отвечать очень долго. Задача:
Условие
Заголовок раздела «Условие»GetData возвращает данные из getter, страхуя кэшом в случае ошибки. Проблема: getter может отвечать очень долго. Задача: в случае ответа дольше timeout отдавать кэш, и правильно обработать кейс, когда getter всегда отвечает долго.
var cacheStore sync.Map
const timeout = time.Second
func GetData(key string, getter func(k string) (any, error)) (any, error) { data, err := getter(key) if err == nil { cacheStore.Store(key, data)
return data, nil }
fmt.Printf("Getter result err: %s ", err)
if data, ok := cacheStore.Load(key); ok { return data, nil }
return nil, err}Решение
Заголовок раздела «Решение»Источник: Wildberries / WB - 3 (Команда отзывов) · 3 кв 2025
← (код без описания) · Все задачи · Go · Провести ревью кода. →