Goのfmt(フォーマット)とLint(リント)まとめ
記事の内容
GoのfmtとLintについてまとめます。
記事を読むと得られるもの
- フォーマットとLintに関する解説
- Goのフォーマットの仕方
- GoのLintの仕方
対象読者
- Goの初学者
記事の長さ
1分で読めます
フォーマットとLintについて
フォーマット(fmt)
フォーマットとは、プログラミングコードを特定のルール通りに整形してくれる機能です。
例えば、以下のように、
package main
import (
"fmt"
)
func main() {
test := 1
test2 := 2
test3 := 3
fmt.Printf("%d\n", test)
fmt.Printf("%d\n", test2)
fmt.Printf("%d\n", test3)
}
ガタガタのプログラミングコードを、
package main
import (
"fmt"
)
func main() {
test := 1
test2 := 2
test3 := 3
fmt.Printf("%d\n", test)
fmt.Printf("%d\n", test2)
fmt.Printf("%d\n", test3)
}
このように、一定のルール通りにフォーマット(整形)する作業のことです。
Go fmt
上記のように、綺麗なプログラミングコードにするためのフォーマットですが、人間が手で行っていては時間がかかります。
Goでは、go fmt <ファイル名>
というコマンドを実行することで、機械が自動でフォーマットしてくれます。
$ go fmt main.go
main.go
上記コマンドは、main.go
というファイルをフォーマットするコマンドです。
このコマンドを実行すると、main.go
のプログラミングコードが綺麗に整形されます。
Lint
Lintとは、特定のルール通りにプログラミングコードが書かれているかどうかをチェックすることです。
例えば、
- 宣言された変数が使われずに放置されていないか?(無駄なソースがないか)
- 共通化できるのに、何度も同じ記述をしているプログラミングコードはないか?
といった、「プログラミングコード自体は動くけど、もっと効率的にできる場所はないか?」といったアドバイスをしてくれるツールです。
golangci-lint
Go言語において、Lintを行うためのツールはたくさんあります。
今回は複数あるLintツールの中から、golangci-lint
を紹介します。
golangci-lintのinstall
公式ドキュメント通りにローカルPCにgolangci-lint
をインストールしてください。
Macの場合は、以下のコマンドでInstallが可能です。
$ brew install golangci-lint
$ brew upgrade golangci-lint
Lintを実行する
以下のGoのプログラミングコードに対して、Lintを実行します。
$ cat main.go
package main
import (
"fmt"
"time"
)
func main() {
test := 1
test2 := 2
test3 := 3
fmt.Printf("%d\n", test)
fmt.Printf("%d\n", test2)
}
$ golangci-lint run main.go
main.go:11:2: test3 declared and not used (typecheck)
test3 := 3
^
main.go:5:3: "time" imported and not used (typecheck)
"time"
^
すると、上記のようなエラーが発生します。
-
test3
という変数が宣言されているが、使用されていない(変数宣言ごと消した方がいい) -
time
というmoduleがimportされてるけど、使用されていない(使わないならimportしなくていい)
という推奨(recommend)が表示されます。
まとめ
GoにおけるfmtとLintを紹介しました。
Goに限らず、formatとLintはプログラミングコードを綺麗に維持するために必要なテクニックですので、全てのプログラミングプロジェクトに導入することをオススメしたいです。
note
勉強法やキャリア構築法など、エンジニアに役立つ記事をnoteで配信しています。
Discussion