Goの便利な書き方Tips集
Goはシンプルな文法と強力な標準ライブラリを備えた言語ですが、知っておくとより効率的にコードを書ける便利な機能もいくつかあります。本記事では、初学者にも役立つ簡潔な記法や習慣をまとめます。
型推論と短い変数宣言
Goではローカル変数を宣言するときに型を省略できます。:= を使うとコンパイラが右辺から型を推論し、グローバルでないスコープ内でのみ利用できます (Go言語の基礎: 初心者向けガイド) 。
// 型推論による変数宣言
count := 0 // int 型
name := "Go" // string 型
defer で確実にクリーンアップ
リソースの開放を忘れるとメモリリークなどの原因になります。defer を使うと関数の終わりに実行する処理を登録できるので、ファイルやネットワークリソースのクローズ処理をまとめやすくなります。note.com のチートシートでは defer を使ってリソースのクローズを忘れないようにする習慣が推奨されています (Go言語チートシート(初級エンジニア向け)) 。
func readFile(path string) (string, error) {
f, err := os.Open(path)
if err != nil {
return "", err
}
defer f.Close() // 関数終了時に確実にクローズ
// ...
}
エラーチェックを徹底する
Goでは関数が複数の戻り値を返すことが多く、エラー値を返す場合は必ずチェックするのが慣習です。note.com のチートシートでも「常にエラーを確認する」ことが重要とされています (Go言語チートシート(初級エンジニア向け)) 。
res, err := http.Get(url)
if err != nil {
// エラー処理
return err
}
defer res.Body.Close()
コードフォーマットと命名規則
Go には gofmt という公式フォーマッタが提供されており、これを使うことでコードスタイルを統一できます。関数名や変数名は camelCase で付け、公開する識別子(エクスポートするもの)は頭文字を大文字にします (Go言語チートシート(初級エンジニア向け)) 。
// 公開する関数は大文字で始める
func SayHello(name string) string {
return fmt.Sprintf("Hello, %s!", name)
}
おまけ: 型を繰り返さない関数引数
Go では同じ型が続く関数引数で最後の型を省略することができます。例えば func sum(a, b, c int) のように書けるので、冗長な型指定を避けられます。
func sum(a, b, c int) int {
return a + b + c
}
以上、Go の便利な書き方や習慣を紹介しました。標準のフォーマッタとエラーハンドリング、defer や型推論を活用して、Go のコードをより読みやすく、メンテナンスしやすくしましょう。