Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
tanaka0325 committed Jul 23, 2020
1 parent 683a57a commit 53a9124
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions kadai2/tanaka0325/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,18 @@
- io.Readerとio.Writerがあることでどういう利点があるのか具体例を挙げて考えてみる
```

### io.Readerとio.Writerについて調べてみよう

#### 標準パッケージでどのように使われているか

身近なものでいうと `fmt``Fprint` 系の関数は `io.Writer` を引数にとり、そこに対して書き込みを行っている。
例えば `Println``io.Writer` として `os.Stdout``Fprintln` に渡して処理を行っている。

標準バッケージでは上記のほかにも、画像やファイルやhttpのリクエスト/レスポンスなど「何か読み書きできるやつ」を抽象化して扱えるように `io.Reader`, `io.Writer` が使われている。

#### io.Readerとio.Writerがあることでどういう利点があるのか具体例を挙げて考えてみる

- 「読み書きできるやつ」と抽象化することができるので、例えば書き込みをする関数を1つ作れば複数の構造体に対応できる
- `io.Writer` がない場合、「ファイルに対して書き込みする関数」「画像に対して書き込みする関数」のように構造体ごとに関数を準備しなくてはならない
- 抽象化することにより、具体的な構造体に依存しなくなるため、テスト時に差し替えることができモックなどでテストがしやくすなる
- 例えば画像を扱うテストをしたい時に、実際に画像を準備する必要がない

0 comments on commit 53a9124

Please sign in to comment.