ホームページ  >  記事  >  バックエンド開発  >  golang はブロックを読み取りますか?

golang はブロックを読み取りますか?

(*-*)浩
(*-*)浩オリジナル
2019-12-17 10:34:254500ブラウズ

golang はブロックを読み取りますか?

#Go 言語の Reader インターフェイスは Read 操作を定義しており、Reader インターフェイスを実装する人は誰でも Read 関数を使用できます。 バッファへのデータの p) バイト数 pn は、今回読み取られた実際のバイト数を示します (0 # #err この読み取り操作のエラー レポートを示します (存在する場合、そうでない場合は nil)

n で読み取られたバイト数が len(p) より小さい場合でも、呼び出し本体は関数中にそれを使用することもあります。 p のすべての空間 (この説明が何を表現しているのかわかりません)
データを読み込むとき、len(p) が足りなくても (IO キャッシュにデータがありません)この時点では)、通常、読み取り操作は直接実行されます。IO バッファーにさらにデータが到着するのを待ち続けるのではなく、取得したデータを返します。

読み取り操作でエラーが発生した場合、または終了した場合ファイルの n バイトのデータを正常に読み取った後、読み取った n バイトのデータを返します。その後、err を返す際には 2 つの操作が必要になる場合があります:

Return n (>0) とこの読み取り操作中にエラー (非 nil)

または、この読み取り操作は n (>0) と nil を返し、次の呼び出しでは 0 とエラー (非 nil) を返します

両方操作は可能であるため、呼び出し元は、err が nil かどうかを最初に判断するのではなく、常に最初に n>0 に従って返されるデータがあるかどうかを判断する必要があります。

たとえば、特定の呼び出しが終了に達したときなどです。 n バイトのデータが必要な場合、Reader は次の 2 つの方法で実装できます。

現在の呼び出しは n と EOF エラーを返します

現在の呼び出しは n と EOF エラーを返しますnil であり、次の呼び出しでは 0 が返されます。また、EOF

Read の実装は 0 と nil を返してはなりません。つまり、0 を返すときは、バッファ領域のサイズが異なる場合を除き、非 nil エラーを返す必要があります。が 0 の場合、呼び出し元は 0 の呼び出しを無視する必要があり、nil などの戻り値の組み合わせは何も起こらなかったかのように扱われます。この戻り値が EOF

を示していないことが特に強調されます。

以上がgolang はブロックを読み取りますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。