Golang の NopCloser 関数を理解する
Go では、io.ReadCloser インターフェイスにより、ソースからデータを読み取り、終了時に閉じることができることが義務付けられています。 。ただし、特定のシナリオでは明示的なクロージャが必要ない場合があります。このような場合、io/ioutil.NopCloser 関数が役に立ちます。
NopCloser の説明
公式ドキュメントにも記載されているように、NopCloser は Close が返された ReadCloser を作成します。メソッドは何も操作しません。これは、Close メソッドが実際には基になるリーダーを閉じないことを意味します。
NopCloser を使用する場合
NopCloser は、io.ReadCloser を返す必要があるが、基礎となるオブジェクトを閉じるつもりがない場合に特に便利です。読者を明示的に。これは、次のようなシナリオで発生する可能性があります。
使用例
次の関数を考えてみましょう。登録された MIME タイプ エンコーダを使用して、データをバイト スライスにマーシャリングします。
func InterfaceToBytes(i interface{}, mime string) (io.ReadCloser, error) { // ... case reflect.Bool: x := v.Bool() if x { return ioutil.NopCloser(bytes.NewBuffer([]byte("true"))), nil } // ... }
ここでは、ioutil.NopCloser を使用して bytes.NewBuffer をラップし、io.ReadCloser を返します。これにより、Close メソッドは何も操作しないため、呼び出し元はバッファを明示的に閉じなくてもデータを読み取ることができます。
以上がGolang の ioutil.NopCloser を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。