はじめに
先日にアップしたはじめてのGo言語(7. privateとpublic)に続いて、Go言語の基礎を学んだ記録を記事としてまとめてみました。
実行環境
WSL2(Ubuntu 22.04.3 LTS)
go 1.18.1
読み込むファイル
- テキスト3行のファイルを読み込ませます。
sumomo.txt
sumomo mo momo mo momo no uchi
sumomo mo momo mo momo no uchi
sumomo mo momo mo momo no uchi
基本的なファイル読み込み
- 今回はファイル読み込みにosパッケージを利用しました。
- 古いバージョンのGo言語だと、ioutilパッケージを使うのが一般的だったそうです。
- JavaやC#などでは
try~finallyでリソースを解放しますが、Go言語では遅延実行(defer)を使って関数から呼び出し元に戻る直前にリソースを解放するそうです。 - Readメソッドの引数として指定したバッファ(byteスライス)のサイズ(※ここでは10バイト)だけ読み込んで、ファイルの終端(※戻り値nが0)になるまで読み込み処理を繰り返しています。
read.go
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("ファイル読み込み開始...")
f, err := os.Open("sumomo.txt")
if err != nil {
fmt.Println("ファイルを開く際にエラーが発生しました。")
return
}
// 関数が終了した際にファイルを確実に閉じる。
defer f.Close()
buff := make([]byte, 10)
for {
n, err := f.Read(buff)
if n==0 {
break
}
if err != nil {
fmt.Println("ファイル読み込みでエラーが発生しました。")
break
}
fmt.Print(string(buff[:n]))
}
fmt.Println("ファイル読み込みが完了しました。")
}
実行結果
ファイル読み込み開始...
sumomo mo momo mo momo no uchi
sumomo mo momo mo momo no uchi
sumomo mo momo mo momo no uchi
ファイル読み込みが完了しました。