Sobes.tech
Senior

Има функция `unpredictableFunc()`, която трябва да бъде обвита така, че да се изпълнява с таймаут (например 1 секунда) и да се логира времето на изпълнение. // Има функция, която работи неопределено дълго и връща число. // Тялото ѝ не може да бъде променяно (представете си, че вътре има мрежов заявка). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Трябва да се промени функцията за обвиване, която ще работи с зададен таймаут (например 1 секунда). // Ако "дългата" функция приключи за това време, отлично, връщаме резултата. // Ако не, връщаме грешка. Резултатът от работата в този случай не е важен. // // Освен това трябва да измерим колко време е работила тази функция (просто да го изведем в лог). // Подписът на функцията за обвиване може да бъде променен. func predictableFunc() int64 { return unpredictableFunc() }