この記事には、「defer ステートメントは関数呼び出しをリストにプッシュする」と記載されています。プログラムの別の場所からそのリストの要素にアクセスして、それらを呼び出すことができるかどうか疑問に思っていますか? それらを複数回呼び出すことはできますか? 遅延動作を持つ関数への参照があると仮定しています(それが役立つ場合)。
だから、ここに私がやりたいことの短い例があります:
func main {
doStuff = func() {
// open database connections
// write temporary files
// etc...
defer func() {
// close database connections
// delete temporary files
// etc...
}()
}
AwesomeApplication(doStuff)
}
func AwesomeApplication(doStuff func()) {
// Now, can I get a reference to the defer function within `doStuff`?
// No, I can't just define the defer function somewhere an pass it
// with `doStuff`. Think of this as a curiosity I want to satisfy,
// not a real use case.
}