Sobes.tech
Senior

Hay una función `unpredictableFunc()`, que necesita ser envuelta para que se ejecute con un tiempo límite (por ejemplo, 1 segundo) y registre el tiempo de ejecución. // Hay una función que funciona indefinidamente y devuelve un número. // No se puede modificar su cuerpo (supongamos que dentro hay una solicitud de red). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Se debe modificar la función envolvente, que trabajará con un tiempo límite establecido (por ejemplo, 1 segundo). // Si la "función larga" termina en ese tiempo, perfecto, devuelve el resultado. // Si no, devuelve un error. El resultado de la ejecución en ese caso no nos importa. // // Además, se debe medir cuánto tiempo estuvo en ejecución esta función (simplemente imprimir en el log). // La firma de la función envolvente puede ser modificada. func predictableFunc() int64 { return unpredictableFunc() }