Sobes.tech
Senior

Istnieje funkcja `unpredictableFunc()`, którą trzeba opakować tak, aby działała z limitem czasu (np. 1 sekunda) i logowała czas wykonania. // Istnieje funkcja, która działa nieskończenie długo i zwraca liczbę. // Nie można zmieniać jej ciała (załóżmy, że wewnątrz jest żądanie sieciowe). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Należy zmodyfikować funkcję opakowującą, która będzie działać z ustawionym limitem czasu (np. 1 sekunda). // Jeśli "długa" funkcja zakończy się w tym czasie, to świetnie, zwracamy wynik. // Jeśli nie, zwracamy błąd. Wynik działania w tym przypadku nie jest ważny. // // Dodatkowo, trzeba zmierzyć, jak długo ta funkcja była wykonywana (wystarczy wypisać w logu). // Sygnaturę funkcji opakowującej można zmienić. func predictableFunc() int64 { return unpredictableFunc() }