io.Reader
の簡単な入門書です。io.Reader
に出くわすことになります。 something からのデータの読み取りに関する単純な抽象化です。io.Reader
を使用すると、標準ライブラリから多くの再利用を得ることができます。 これは、非常に一般的に使用される抽象化です(対応する io.Writer
とともに)context
」を使用する方法について説明しました。これは、計算コストがかかる可能性のあるタスクを実行していて、それらを停止できるようにしたい場合に特に便利です。io.Reader
を使用している場合、速度について保証はありません。1ナノ秒または数百時間かかる場合があります。自分のアプリケーションでこの種のタスクをキャンセルできると便利だと思うかもしれませんが、それはMatとDavidが書いたものです。context.Context
とio.Reader
)を組み合わせました。io.Reader
をラップしてキャンセルできるように、いくつかの機能をTDDで試してみましょう。io.Reader
を使用するときは、通常、他の関数にそれを提供しているので、詳細に気を使う必要はありません。 json.NewDecoder
やioutil.ReadAll
など。"ABCDEF"を持つio.Reader
が与えられたとき、途中でキャンセル信号を送っても、読み続けようとすると何も出ないので、"ABC"しか出ません。
Reader
のRead
メソッドは、その内容を、提供する []byte
に読み込みます。io.Reader
を作成しますio.Reader
をcontext.Context
で作成できるようにしたいと考えています。io.Reader
を返す必要がありますio.Reader
を返すだけですio.Reader
の「通常の」振る舞いを壊していないかどうかを、ある程度検証することが重要です。cancel
」できるように、キャンセル付きのcontext.Context
を作成しますctx
を渡す必要がありますcancel
後に何も読まれなかったことを主張します。context.Background
を通過するように更新する必要があります。)io.Reader
とcontext.Context
をカプセル化するタイプが必要であることはわかっているので、それを作成して、元のio.Reader
の代わりに関数からそれを返してみましょうio.Reader
への呼び出しを委任してみましょう。context.Context
がキャンセルされたかどうかを確認する必要があります。context.Context
から返していることに気づくでしょう。これにより、コードの呼び出し元がキャンセルが発生した様々な理由を調べることができます。ソフトウェア工学では、デリゲーションパターンはオブジェクト指向の設計パターンであり、オブジェクトを構成して継承と同じコードの再利用を実現することができます。