ファイル入出力はファイルディスクリプタを介して行う。要するにファイルをオープンしてファイルディスクリプタを取得し、使い終わったらクローズする、ってわけだ。
ただし、標準入出力に関しては最初から os
パッケージに用意されている。
- os.Stdin: 標準入力
- os.Stdout: 標準出力
- os.Stderr: 標準エラー出力
標準入力から読み込むには os.Stdin.Read
関数、出力するには os.Stdout.Write
または os.Stderr.Write
関数を使う。
ちょっと試してみよう。次のプログラムは、標準入力から受け取った文字列をそのまま標準出力に書き出す(ctrl + C で終了)。
package main import "os" func main() { buff := make([]byte, 256) for { c, _ := os.Stdin.Read(buff) if c == 0 { break } os.Stdout.Write(buff[:c]) } }
^o^ > go run echo.go hello hello
ひとつめの hello
がキーボードからの入力で、ふたつめの hello
が返ってきた出力だ。