0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Goの便利な書き方Tips集

Posted at

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 のコードをより読みやすく、メンテナンスしやすくしましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?