質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

1回答

4806閲覧

Go言語のgofmt, goimports, goreturnsなどの動作について

catindog

総合スコア16

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2017/07/26 08:23

Go言語を最近やり始めて、シンプルなシンタックスと、例外がない機構、goroutineなどが非常に便利なのですが、その他のGoのルールについて気になることがあります。

主に、GoはVSCODEで編集しているのですが、gofmt, goreturnsなどで、必要なモジュールを自動でインポートしてくれる機能を便利に使っています。

goreturnsなどを適応すると、インデントの幅をタブに置き換えるようです。また、無駄に空いたスペースを取り除くようです。

スペースをtabに変換されることは、別にいいのですが、変数の定義などにスペースをパディングして(個人的に)見やすくしたとしても、切る詰められるのはちょっとどうにかしたいと思いました。

なにか、うまい方法はございませんか。

(変更前)

go

1package main 2import "fmt" 3func main() { 4 a := 2 5 b := 3 6 fmt.Println("Hello World") 7}

(変更後)

go

1package main 2 3import "fmt" 4 5func main() { 6 a := 2 7 b := 3 8 fmt.Println("Hello World") 9}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

go は go 自信でソースファイルの解析から表示するためのパッケージまでを全て自ら提供しており、それを各ツールが使用する事でどのツールを使ってもほぼ同じ結果を得られる様にしています。

goimport や goreturns もそれを利用しているツールです。go のライブラリを使ってソースコードを解析し、必要な物を追加(goimport であれば import 文、goreturns であれば戻り値の型)して、最後にコードを再生成します。その際に go のライブラリを使っていファイルを更新していますが、どのツールも同様にデフォルト値を使っています。

もしどうしても go 標準のインデント幅などが気に入らないのであれば、ツールに手をいれるしかありません。

なお、これらのフォーマットが統一されている事で逆にインデントを直しただけのコミットが無くなったり、別の開発者とインデント幅で言い争いになったりといった非常に不毛な争いを避けられるというメリットがあります。
ですので go のデフォルトのフォーマットに従っておくのが一番良いというのが私のおすすめです。

投稿2017/07/27 03:22

mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

catindog

2017/07/27 03:57

ありがとうございます。 ツールに手を入れる感じになるのですね。 承知いたしました。 実は何度か、goコンパイラ自体に手を入れており、フォーマットの動作が結構深く書かれており、goの言語としてこういうインデントであるべきだという主張は伝わってきました。 慣れるまでしばらくかかりそうですが、Goの哲学を尊重していきたいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問