go run
や go test
でコードを試しながら書きながら……というフェーズでは、以下のような状況によく遭遇することと思います:
- デバッグプリント用のコードを削除したら、"log" や "fmt" パッケージが不要になって
imported and not used: "log"
と言われた。まだ使うかもしれないのでいちいち消したくない。 - 同様に、コードを整理したところ使っていない変数がでてきて
i declared and not used
と言われた。まだ使うかも(ry
出来上がりのコードの品質を高く保つには便利な機能ですが、試行錯誤をしている段階ではけっこうな障害になります。そこで goquickfix。
go build
が通らないコードに goquickfix をかければ、コードを書き換えて go build
可能にしてくれます:
goquickfix -w hoge.go
やっていることは簡単で、エラーを起こす識別子の登場を blank identifier _
で抑制するだけです。
例えば以下のようなコードは、
package main import ( "fmt" "log" // <- imported and not used: "log" ) func main() { nums := []int{3, 1, 4, 1, 5} for i, n := range nums { // <- i declared and not used fmt.Println(n) } }
goquickfix -w 後以下のようなコードになります。
package main import ( "fmt" _ "log" // <- インポート文は残すけど名前を使用しない ) func main() { nums := []int{3, 1, 4, 1, 5} for i, n := range nums { fmt.Println(n) _ = i // <- i はここで登場するのでエラーにならない } }
goimports を愛用している人には、インポート文の書き換えは不要かもしれませんね。
もちろんその場しのぎの対処で、最終的には消したいコードです。-revert
オプションを与えることで、goquickfix によって導入されたと思しきコードを取り除きます(たぶんそうだろうというコードを修正するようになっているので、完全に戻るとは限りません):
goquickfix -revert -w hoge.go
シンプルかつ便利ですね。
どうぞご利用下さい。これは gore の副産物でした。
The Go Programming Language (Addison-Wesley Professional Computing Series)
- 作者: Brian W. Kernighan,Alan Donovan
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2015/08/27
- メディア: ペーパーバック
- この商品を含むブログを見る