Sobes.tech
Senior

C'è una funzione `unpredictableFunc()`, che deve essere avvolta in modo che venga eseguita con un timeout (ad esempio, 1 secondo) e venga registrato il tempo di esecuzione. // C'è una funzione che funziona indefinitamente e restituisce un numero. // Il suo corpo non può essere modificato (supponiamo che all'interno ci sia una richiesta di rete). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // È necessario modificare la funzione di wrapping, che funzionerà con un timeout impostato (ad esempio, 1 secondo). // Se la "funzione lunga" termina in questo tempo, ottimo, restituiamo il risultato. // Se no, restituiamo un errore. Il risultato di questa esecuzione in questo caso non ci interessa. // // Inoltre, bisogna misurare quanto tempo questa funzione è stata in esecuzione (basta stamparlo nel log). // La firma della funzione di wrapping può essere modificata. func predictableFunc() int64 { return unpredictableFunc() }