goimportsをインストールし、Go言語のコードをフォーマットする手順

Go言語

goimportsとはGo言語の準標準パッケージ(サブレポジトリ)であるGo Toolsに内包されている静的解析ツールです。

goimportsの機能は以下の通りです。

goimportsの機能
  • 不要なパッケージのimportを削除
  • 必要なパッケージのimportを追加
  • gofmtのルールに沿ったコードのフォーマット

goimportsはパッケージのインポートを修正するだけでなく、Go言語の標準パッケージであるgofmtのルールでコードを修正します。1
そのため、goimportsはgofmtの上位互換ツールといえます。

今回はgoimportsの利用方法について紹介します。利用するGoのバージョンは1.16.3です。

下準備: 『$GOPATH/bin』をパスに追加する

goimportsコマンドを実行するためには$GOPATH/binをパスに追加する必要があるので、シェルの設定ファイルを修正しておきます。

### GOPATHの確認
$ go env | grep GOPATH

GOPATH="~/go"

.zshrc

export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH

# 重複パスを登録しない
typeset -U path PATH

goimportsのインストール

goimportsのバイナリファイル(実行ファイル)をインストールします。

$ go install golang.org/x/tools/cmd/goimports@latest

$GOPATH/binにgoimportsがインストールされていればOKです。

$ ls $GOPATH/bin

goimports

動作確認

以下のようなサンプルコードに対してgoimportsを実行してみます。

main.go

package main

import (
    "fmt"
    "os"
) // osはimport不要

func main() {
fmt.Println("goimports") // 本来はインデントが必要
}
### goimportsでmain.goのコードをフォーマットする
$ goimports -w main.go
# -w: 修正した内容で上書き

goimportsを実行すると、以下のようにimport文とコードのフォーマットが行われます。

 import (
        "fmt"
-       "os"
 ) // osはimport不要

 func main() {
- fmt.Println("goimports") // 本来はインデントが必要
+       fmt.Println("goimports") // 本来はインデントが必要
}

さいごに

Twitter(@nishina555)やってます。フォローしてもらえるとうれしいです!


  1. https://pkg.go.dev/golang.org/x/tools/cmd/goimports