🌊

Go言語で関数の戻り値の変数名を何にすればよいか?

2024/05/05に公開

Go言語で関数の戻り値の変数名は何にするのが一般的なんだろうという疑問がありました。
そこで、GoでセルフホストされているGo自身はどんな変数名を使用しているのかを、以下のリポジトリをcloneして調べてみました。
https://github.com/golang/go

調査に使用したコマンド

git grepを使ってreturnを含む行からタブ文字を除去して、重複する行が多い順に30件出力してみます。

# macOSで実行しています
git grep -h 'return' '*.go' | tr -d "\t" | sort | uniq -c | sort -hr | head -n 30

出力結果です。

18965 return
14426 return true
5504 return false
3545 return nil
2439 return err
1683 return nil, err
 895 return 0
 634 return n
 483 return s
 461 return x
 436 return ""
 402 return -1
 359 return r
 309 return 0, err
 305 return 0, 0
 287 return v
 271 return 1
 264 return nil, nil
 256 return a
 252 return 0, 1 // Illegal UTF-8: not a continuation byte.
 237 return "", err
 231 return t
 229 return p
 224 } // ERROR "missing return"
 224 return b
 208 return i
 190 return c
 168 return 0, false
 168 return 0, 2 // Illegal UTF-8: not a continuation byte.
 162 return n, err

結論

err以外は1文字の変数名が多いですね。
変数が何を指しているかをざっと確認してみると、以下のような感じでした。
結論としては、あまり変数名にこだわらなくてもよいのかなという印象です。

変数名 代表的な指示対象
err error
n 数値, 名前
s 文字列
x 汎用(x, y, zのx?)
r rune, reader
v 汎用(valueの意味?)
a 汎用(a, b, cのa?)
t
p Pから始まる型
b byte, []byte
i 整数型
c カウント, 複素数型

Discussion