技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

エラーハンドリング【Go】

返されたエラーをifを使ってハンドリングします。

file, err := os.Open("hello.go")    // 読み取り専用でファイルを開く
if err != nil {
    log.Fatalln(err)   //  errが返されたらプログラム終了
}
defer file.Close()
data := make([]byte, 100)
count, err := file.Read(data)    // ファイルを読み込み、dataに格納した上で、バイトの数を返す(正確にはポインタを経由。コマンドgo doc os readでドキュメントを確認)
if err != nil {
    log.Fatalln(err)   //  errが返されたらプログラム終了
}
fmt.Println(count, string(data))    // バイト数と、読み込んだファイルの内容を出力

2度エラーハンドリングをしていて、かつerr変数と初期化「:=」を使用していますが、
左辺に1つでも新しい変数がある場合、定義エラーとはなりません。
errの内容は上書きされます。

errのみを返す関数の場合、次のように省略して書くこともできます。

if err := os.Chdir(); err != nil {
log.Fatalln(err)
}