gopherと学ぶgolang ~go fmt編~

Post on 08-Jul-2015

2.255 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

第15回 Cloud Foundry 輪読会

TRANSCRIPT

gopher と学ぶ golang ~ go fmt 編 ~

2013/11/29

自己紹介

  Name : Sota Nakajima

  Twitter : @soldier_nakaji

 最近の活動 :

golangとは

既存言語のアイデアをもとに生み出された

 新しいプログラミング言語 (2009/11/10 誕生 )

golangの特徴

・早いコンパイル速度、実行速度

・メモリ管理 (GC)

・マルチコア活用 (goroutine)

・便利なコマンド

 ・整形 (go fmt)

 ・パッケージ収集 (go get)

 ・テスト (go test)

 ・ドキュメント作成・閲覧 (go doc)

 ・その他

go fmtって?

・ go のコードを整形

・使い方は、 $go fmt ファイル名

  ※ $go fmt ./... とするとカレントディレクトリ

    以下の全ファイルに対し実行

  ※ ... は / を含めたワイルドカード

go fmt誕生の経緯

全てのコーディング規約論争を生まれる前に消し去りたい

go fmt誕生の経緯

全てのコーディング規約論争を生まれる前に消し去りたい

go fmtの特徴1

・余計な () や ; 許さない、 { の後は強制改行

- if (a == b) { fmt.Println("Hello, 世界 "); }

+ if a == b {

+ fmt.Println("Hello, 世界 ")

+ }

go fmtの特徴2

・ import 文の記述順入れ替え

import (

- "strings"

"fmt"

+ "strings"

)

go fmtの特徴3

・改行コードを LF に変換

・ハードタブでインデント

 (差分略)

ソフトタブも使える、が・・

$ gofmt -tabs=false -tabwidth=4 -l -w ファイル名

しかし、

http://golang.org/doc/effective_go.html

訳)インデントはデフォルトで tab を使います。

スペースはどうしても必要なときだけ使ってね。

Indentation

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

ソフトタブも使える、が・・

$ gofmt -tabs=false -tabwidth=4 -l -w ファイル名

しかし、

http://golang.org/doc/effective_go.html

訳)インデントはデフォルトで tab を使います。

スペースはどうしても必要なときだけ使ってね。

Indentation

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

結局、使うなってこと?

・「どのオプションでフォーマットしても良い」状態は良くない

  => 他人のソースを go fmt したらバージョン

   管理システムで差分発生

  => オプション合わせるためにワンアクション    増える

・ golang 開発側はベースとなる立場を示した

結論

・バージョン管理システムに commit する前に必ず go fmt 。ソフトタブは極力使わない

※ ファイル保存時などに自動的に go fmt してくれる仕組みを使うのがオススメ

 ・ IDE

 ・テキストエディタの GoPlugin

 ・ git hook

おわり

top related