Skip to content

Commit 53a9124

Browse files
committed
update README
1 parent 683a57a commit 53a9124

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

kadai2/tanaka0325/README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,18 @@
88
- io.Readerとio.Writerがあることでどういう利点があるのか具体例を挙げて考えてみる
99
```
1010

11+
### io.Readerとio.Writerについて調べてみよう
12+
13+
#### 標準パッケージでどのように使われているか
14+
15+
身近なものでいうと `fmt``Fprint` 系の関数は `io.Writer` を引数にとり、そこに対して書き込みを行っている。
16+
例えば `Println``io.Writer` として `os.Stdout``Fprintln` に渡して処理を行っている。
17+
18+
標準バッケージでは上記のほかにも、画像やファイルやhttpのリクエスト/レスポンスなど「何か読み書きできるやつ」を抽象化して扱えるように `io.Reader`, `io.Writer` が使われている。
19+
20+
#### io.Readerとio.Writerがあることでどういう利点があるのか具体例を挙げて考えてみる
21+
22+
- 「読み書きできるやつ」と抽象化することができるので、例えば書き込みをする関数を1つ作れば複数の構造体に対応できる
23+
- `io.Writer` がない場合、「ファイルに対して書き込みする関数」「画像に対して書き込みする関数」のように構造体ごとに関数を準備しなくてはならない
24+
- 抽象化することにより、具体的な構造体に依存しなくなるため、テスト時に差し替えることができモックなどでテストがしやくすなる
25+
- 例えば画像を扱うテストをしたい時に、実際に画像を準備する必要がない

0 commit comments

Comments
 (0)