Go にはソースコードをフォーマットする gofmt がある。
gofmt -w filename.go
とすると、統一された書式に書き換えてくれる。
例えば、以下のようにインデントも空白も適当に入れたソースでも、
package main import "fmt" func main() { msg :="hello world" fmt.Printf( "%s and GO!\n" , msg ) list :=[]int{1,2,3,4,5} for v:= range list{ fmt.Println(v) } }
gofmt を通すとキレイになる。
package main import "fmt" func main() { msg := "hello world" fmt.Printf("%s and GO!\n", msg) list := []int{1, 2, 3, 4, 5} for v := range list { fmt.Println(v) } }
vimmer なので、もうひとひねり。vimrc に以下を記述。
command! GoFmt execute ':silent !gofmt -w %' | execute ':edit! %'
:GoFmt を実行すると gofmt コマンドで整形した後に開き直す。BufWritePost で発動すると幸せになれるかも。
追記
保存時に整形する設定
augroup MyGroup autocmd! MyGroup autocmd BufWritePost *.go :GoFmt augroup END command! GoFmt execute ':silent !gofmt -w %' | execute ':edit! %'