Back to questions
Бюро 1440
Senior
6
Есть функция `unpredictableFunc()`, нужно обернуть её так, чтобы она выполнялась с таймаутом (например, 1 секунда), и логировалось время выполнения. // Есть функция, работающая неопределённо долго и возвращающая число. // Её тело нельзя изменять (представим, что внутри сетевой запрос). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Нужно изменить функцию обёртку, которая будет работать с заданным таймаутом (например, 1 секунду). // Если "длинная" функция отработала за это время - отлично, возвращаем результат. // Если нет - возвращаем ошибку. Результат работы в этом случае нам не важен. // // Дополнительно нужно измерить, сколько выполнялась эта функция (просто вывести в лог). // Сигнатуру функцию обёртки менять можно. func predictableFunc() int64 { return unpredictableFunc() }
Companies where asked