Как реализовать что-то, что работает как инструкция defer
, из python?
Отложить вызов функции в стек. Когда функция, содержащая оператор defer, возвращается, вызовы отложенной функции выворачиваются и выполняются один за другим, в области, в которой вначале лежал оператор defer. Операторы отсрочки выглядят как вызовы функций, но не выполняются до тех пор, пока они не будут выгружены.
Пример использования этого метода:
func main() {
fmt.Println("counting")
var a *int
for i := 0; i < 10; i++ {
a = &i
defer fmt.Println(*a, i)
}
x := 42
a = &x
fmt.Println("done")
}
Выходы:
counting
done
9 9
8 8
7 7
6 6
5 5
4 4
3 3
2 2
1 1
0 0
Пример использования usecase:
var m sync.Mutex
func someFunction() {
m.Lock()
defer m.Unlock()
// Whatever you want, with as many return statements as you want, wherever.
// Simply forget that you ever locked a mutex, or that you have to remember to release it again.
}