post Image
【Go】 go fmt でコード整形

goには標準でコードを整形してくれる機能があるようです。そこで、実際にどうフォーマットされるのか試してみました。

go fmt 実行前後のコード比較

元のコード

test.go
package main
import(
"strings"
"fmt"
)
type T struct{
name string // オブジェクトの名前
value int // その値
}
func main(){
sum := 0
for i:=1;i<=10;i++{
if (i > 5) {
s := "iが6以上です"
fmt.Printf("%d\n", s)
fmt.Printf("%v\n", strings.Fields(s))
}
sum += i
}
fmt.Printf("%d\n", sum)
}

読み辛い…けど、一応動きます。(コードに意味はありません。笑)

go fmt の実行

go fmt test.go

フォーマット後のコード

test.go(フォーマット後)
package main

import (
    "fmt"
    "strings"
)

type T struct {
    name  string // オブジェクトの名前
    value int    // その値
}

func main() {
    sum := 0
    for i := 1; i <= 10; i++ {
        if i > 5 { 
            s := "iが6以上です" 
            fmt.Printf("%d\n", s)
            fmt.Printf("%v\n", strings.Fields(s))
        }   
        sum += i
    }   
    fmt.Printf("%d\n", sum)
}

何が変わった?

行間

packageステートメント、importステートメントなどの間に1行空行が挿入されています。

インデント

インデントが挿入されています。また、インデントはデフォルトでハードタブを用います。
https://golang.org/doc/effective_go.html#formatting

Indentation
We use tabs for indentation and gofmt emits them by default. Use spaces only if you must.

import順

パッケージのインポート順が「”strings”, “fmt”」から「”fmt”, “strings”」に変わっています。
※何順か調べられていないので、ご存知の方ご教授ください><

【追記(2015/09/05)】
以下記事で詳細に触れました。
【Go】go fmt でフォーマット化された後のimportの順番について

構造体のフィールド、コメントのカラムの整列

name, valueの型の縦位置、コメントの縦位置が揃っています。
https://golang.org/doc/effective_go.html#formatting

ifの構文の()

元のコードではifの条件を記述する構文に()が付いていますが、フォーマット後は()が取れています。
https://golang.org/doc/effective_go.html#formatting

Parentheses
Go needs fewer parentheses than C and Java: control structures (if, for, switch) do not have parentheses in their syntax. Also, the operator precedence hierarchy is shorter and clearer, so

開始括弧の前のスペース

fmt 前 fmt 後
import( import (
func main(){ func main() {

のように、フォーマット後は各ブロックの開始括弧の前に半角スペースがつきました。

参考

https://golang.org/doc/effective_go.html#formatting
http://www.slideshare.net/nakaji-s/gophergolanggo-fmt
http://okisanjp.com/archives/4900


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。