まったりするmatayu

ツイートにゴミがついた感じのブログ

goreturns?

golangにはフォーマット(コードの見た目)を綺麗にするgofmtという開発支援ツールがあり,

それにimportの整理機能をつけたgoimportsというものもある.

それに似たgoreturnsなるものがあったからどういうものか,goimportsと何が違うのかを調べた.

goreturns

github.com

パッケージ説明には

This tool adds zero-value return values to incomplete Go return statements, to save you time when writing Go. It is inspired by and based on goimports.

と書いてある.

"based on goimports"だから,goimportsの機能+αみたいな感じ.

+αの部分は, "adds zero-value return values to incomplete Go return statements"で,

0の返り値をつけるべき時につけるようだ.

0を返す時ってどんな時?

たしかC言語では関数が正しく実行された時に0を返す慣習があるというのを聞いたような聞かなかったような.

それについて述べられた記事が調べたらあった.

mseeeen.msen.jp

main関数が正常終了したことをシェルに伝えるためにreturn 0; をするようだ.

シェルの終了ステータス0が正常終了という意味.

ということはgolangで0をreturnするのもC言語のそれと同じ意味があるのか?

違った

github.com

ここに張ってあるgif画像をよくみると,

returnの値の不足をゼロ値で補完していることがわかる.

golangにおけるゼロ値とは単に0のことを指すのではなく,

string であれば ""

int であれば 0

bool であれば false

といった変数の宣言をした時に最初に入っている値のことを指していることがわかった.

結論

goreturnsgoimportsの機能に加えて,returnの値をゼロ値で補完する機能がある.

(結局githubに書いてある文言と同じになった)