Sobes.tech
Senior

Bir fonksiyon var `unpredictableFunc()`, onu zaman aşımına uğrayacak şekilde (örneğin 1 saniye) sarmak ve çalışma süresini kaydetmek gerekiyor. // Sonsuz süre çalışan ve sayı döndüren bir fonksiyon var. // Gövdesini değiştirmemize izin yok (içinde bir ağ isteği olduğunu varsayalım). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Sarma fonksiyonunu değiştirmemiz gerekiyor, bu fonksiyon belirli bir zaman aşımıyla çalışacak (örneğin 1 saniye). // Eğer "uzun" fonksiyon bu süre içinde tamamlandıysa, mükemmel, sonucu döndürürüz. // Aksi takdirde, hata döndürürüz. Bu durumda çalışma sonucunun önemi yok. // // Ayrıca, bu fonksiyonun ne kadar süre çalıştığını ölçmemiz gerekiyor (sadece log'a yazdırmak yeterli). // Sarma fonksiyonunun imzasını değiştirebiliriz. func predictableFunc() int64 { return unpredictableFunc() }