4 ms·
You can get function based defers pretty easily with block ones too func Deferred() { defers := []func(){} defer func() { for _,
by bbatha 6y ago
You can get function based defers pretty easily with block ones too
func Deferred() {
defers := []func(){}
defer func() {
for _, def := range defers {
def()
}
}
for {
cleanup, done := work()
defers = append(defers, cleanup)
if done {
break
}
}
}
Edit: this is how defers were implemented in the compiler until a few versions ago and will fall back to this if you defer in a loop