私は Go が初めてで、さまざまな時点で多くのファイルを開く必要があるアプリを作成する必要があります。各ファイルを開くコードは次のようになります。
fl, err := os.Open(..)
check(err)
defer fl.Close()
whereは、何か問題が発生した場合にcheck
呼び出すだけです。panic
さて、私が言ったように、そのスニペットはかなりの回数繰り返されます。私はこのようなものが欲しいです:
func foo(f string){
fl, err := os.Open(f)
check(err)
defer fl.Close() //lolwut
}
もちろん、一度foo
戻っdefer
たら、ファイルを起動して閉じます。
呼び出し元が時間だと判断するまで、関数の延期を延期する方法はありますか?
私がこれまでに試みたのは、遅延を匿名関数に入れ、foo
それを返し、呼び出し元にそれを実行させることです(できればワンライナーで)。それでも、それを実装する際にいくつかの障害にぶつかっています。それが正しいアプローチであるかどうかさえわかりません。
tl;dr: Go で呼び出し元の関数に延期を延期する方法はありますか?