Sobes.tech
Senior

Es gibt eine Funktion `unpredictableFunc()`, die eingewickelt werden muss, damit sie mit einem Timeout (z.B. 1 Sekunde) ausgeführt wird und die Ausführungszeit protokolliert wird. // Es gibt eine Funktion, die unendlich lange läuft und eine Zahl zurückgibt. // Ihr Körper darf nicht verändert werden (angenommen, es ist eine Netzwerk-Anfrage im Inneren). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Die Wrapper-Funktion muss geändert werden, um mit einem festgelegten Timeout (z.B. 1 Sekunde) zu arbeiten. // Wenn die "lange" Funktion innerhalb dieser Zeit fertig ist, ist das großartig, wir geben das Ergebnis zurück. // Wenn nicht, geben wir einen Fehler zurück. Das Ergebnis der Ausführung ist in diesem Fall nicht wichtig. // // Zusätzlich muss gemessen werden, wie lange diese Funktion lief (einfach im Log ausgeben). // Die Signatur der Wrapper-Funktion kann geändert werden. func predictableFunc() int64 { return unpredictableFunc() }