github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/cmd/gofmt/doc.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 /* 6 GofmtはGoプログラムの書式設定を行います。 7 インデントにはタブを使用し、整列にはスペースを使用します。 8 整列は、エディタが固定幅フォントを使用していることを前提としています。 9 10 明示的なパスのない場合、標準入力を処理します。 ファイルが指定された場合は、そのファイルに対して操作を行います。 ディレクトリが指定された場合は、そのディレクトリ内のすべての.goファイルに対して再帰的に操作を行います。 (ピリオドで始まるファイルは無視されます。) 11 デフォルトでは、gofmtは再フォーマットされたソースを標準出力に出力します。 12 13 使用方法: 14 15 gofmt [flags] [path ...] 16 17 フラグは次のとおりです: 18 19 -d 20 再フォーマットされたソースを標準出力に出力しないでください。 21 もしファイルの書式がgofmtと異なる場合は、差分を標準出力に表示します。 22 -e 23 すべての (不正なものも含む) エラーを表示します。 24 -l 25 再フォーマットされたソースを標準出力に出力しないでください。 26 もしファイルの書式がgofmtと異なる場合は、ファイル名を標準出力に表示します。 27 -r rule 28 書式変更を行う前にソースに修正ルールを適用します。 29 -s 30 コードを簡略化しようとします (修正ルールの適用後、必要な場合)。 31 -w 32 再フォーマットされたソースを標準出力に出力しないでください。 33 もしファイルの書式がgofmtと異なる場合は、gofmtのバージョンで上書きします。 上書き中にエラーが発生した場合、元のファイルは自動バックアップから復元されます。 34 35 デバッグサポート: 36 37 -cpuprofile filename 38 指定されたファイルにCPUプロファイルを書き込みます。 39 40 -rフラグで指定された書式変更ルールは、次の形式の文字列である必要があります: 41 42 pattern -> replacement 43 44 パターンとリプレースメントの両方は、有効なGo式でなければなりません。 45 パターンでは、一文字の小文字識別子は任意の部分式に一致するワイルドカードとして機能し、リプレースメントで同じ識別子に置き換えられます。 46 47 gofmtは標準入力から読み込む場合、フルのGoプログラムまたはプログラムのフラグメントのいずれかを受け入れます。 プログラムのフラグメントは、文法的に有効な宣言リスト、文リスト、または式でなければなりません。 このようなフラグメントを書式設定する場合、gofmtは先頭のインデント、先頭と末尾のスペースを保持するため、Goプログラムの個々のセクションをパイプを通じてgofmtに渡すことで書式設定できます。 48 49 # 例 50 51 不要な括弧をチェックするためのファイル: 52 53 gofmt -r '(a) -> a' -l *.go 54 55 括弧を削除するためのコマンド: 56 57 gofmt -r '(a) -> a' -w *.go 58 59 パッケージツリーを明示的なスライスの上限から暗黙的な上限に変換するコマンド: 60 61 gofmt -r 'α[β:len(α)] -> α[β:]' -w $GOROOT/src 62 63 # simplifyコマンド 64 65 -sオプションで実行すると、gofmtは可能な限り以下のソース変換を行います。 66 67 []T{T{}, T{}} 68 という形式の配列、スライス、またはマップのコンポジットリテラルは次のように簡略化されます: 69 []T{{}, {}} 70 71 以下の形式のスライス式は次のように簡略化されます: 72 s[a:len(s)] -> s[a:] 73 74 以下の形式の範囲式は次のように簡略化されます: 75 for x, _ = range v {...} -> for x = range v {...} 76 77 以下の形式の範囲式は次のように簡略化されます: 78 for _ = range v {...} -> for range v {...} 79 80 これにより、以前のGoのバージョンと互換性のない変更が生じる場合があります。 81 */package main