Zenn の本「Go から学ぶ I/O」の写経リポジトリ
- macOS 14.0 Sonoma
- Go 1.20.6
引用元:Go から学ぶ I/O:Chapter 01 - はじめに
この本では、Go 言語で扱える I/O についてまとめています。
Go 言語 I/O を扱うためのパッケージとしては、ドンピシャのものとしては io パッケージがあります。 しかし、例えば実際にファイルを読み書きしようとするときに使うのは、os パッケージの os.File 型まわりのメソッドです。 標準入力・出力を扱おうとすると fmt パッケージが手っ取り早いですし、また速さを求める場面では bufio パッケージのスキャナを使うということもあるでしょう。 このように、「I/O」といっても Go でそれに関わるパッケージは幅広いのが現状です。
また、ファイルオブジェクト f に対して
f.Read()
とかいう「おまじない」と唱えるだけで、なんでファイルの中身が取得できるの?一体裏で何が起こっているの?という疑問を感じている方もいるかと思います。ここでは
- os や io とかいっぱいあるけど、それぞれどういう関係なの?
- 標準入力・出力を扱うときに fmt と bufio はどっちがいいの?
- そもそも bufio パッケージって何者?
- Go でやった I/O まわりの操作は、実現のために裏で何が起こっているの?
こういったことを一から解説していきます。
- Chapter 01:はじめに
- Chapter 02:ファイルの読み書き
- Chapter 03:ネットワーク
- Chapter 04:io パッケージによる抽象化
- Chapter 05:bufio パッケージによる buffered I/O
- Chapter 06:fmt で学ぶ標準入力・出力
- Chapter 07:bytes パッケージと strings パッケージ
- Chapter 08:おわりに
いくつか実装したサンプルコードの実行方法
TCP サーバ / クライアントの実行方法
# TCP サーバの起動
cd learn-io-from-golang/network_io/server
go run .
# 別のターミナルから TCP クライアントを起動
cd learn-io-from-golang/network_io/client
go run .