go 言語では、「go fmt」コマンドは主に、開発者が作成したコード ファイルのフォーマットを支援するために使用されます。 "go fmt" コマンドは、Go 言語コード仕様に従って、指定されたコード パッケージ内のすべての Go 言語ソース コード ファイルのコードをフォーマットします。すべての Go 言語ソース コード ファイルには、コマンド ソース コード ファイル、ライブラリ ソース コード ファイル、およびテスト ソース コードが含まれますファイル。 「go fmt」コマンドは、指定されたコード パッケージに対応するディレクトリに直接保存されている Go 言語ソース コード ファイルのみをフォーマットします。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
go fmt コマンドの概要
プログラミング言語では、コードの書式設定が最も物議を醸す問題です。開発者によってコーディング スタイルや習慣が異なる場合があります。 , しかし、すべての開発者が同じ形式でコードを書くことができれば、開発者はその言語が解決しようとしている問題に集中でき、開発時間を節約できます。
Go 言語開発チームは、統一された公式コード スタイルを策定し、開発者がコードを統一スタイルにフォーマットできるよう gofmt ツール (gofmt または go fmt) を起動しました。
gofmt は、最初に標準入力を読み取る cli プログラムです。ファイル パスが渡されると、ファイルはフォーマットされます。ディレクトリが渡されると、ディレクトリ内のすべての .go ファイルがフォーマットされます。パラメータが渡されない場合、現在のディレクトリ内のすべての .go ファイルがフォーマットされます。
Go 言語には go fmt
コマンドもあり、go fmt
コマンドは gofmt を単純にカプセル化したものです。
go fmt コマンドは主に、作成したコード ファイルのフォーマットを支援するために使用されます [多くのサードパーティ統合ソフトウェアは go fmt コマンドを使用します]
使用法:
go fmt <文件名>.go
go fmt コマンドを使用します。gofmt が使用されることが多く、パラメーター -w が必須です。そうでない場合、フォーマット結果はファイル 。 gofmt -w src を使用すると、プロジェクト全体をフォーマットできます。
パラメータの紹介
-l フォーマットが必要なファイルを表示します
-w Put 書き換えられた内容は、結果として標準出力に出力されるのではなく、ファイルに直接書き込まれます。
go fmt および gofmt
go fmt コマンドは、指定されたコード パッケージ内のすべての Go 言語ソース コード ファイルのコードを、Go 言語コード仕様に従ってフォーマットします。すべての Go 言語ソース コード ファイルには、コマンド ソース コード ファイルが含まれます。ライブラリ ソース コード ファイルとテスト ソース コード ファイル。コード パッケージにサブコード パッケージも含まれる場合、サブコード パッケージ内の Go 言語ソース コード ファイルは含まれないことに注意してください。つまり、 go fmt コマンドは、指定されたコード パッケージに対応するディレクトリに直接保存されている Go 言語ソース コード ファイルのみをフォーマットします。 go doc コマンドと godoc コマンドの関係と同様に、go fmt コマンドは gofmt コマンドを単純にカプセル化したものです。 go fmt コマンド自体は 2 つのタグを受け入れることができます。 -n フラグを使用すると、コマンド プログラムは実際に実行せずに、内部で使用される gofmt コマンドとそのフラグおよび引数を出力するだけで済みます。 -x フラグを指定すると、コマンド プログラムはコマンドの出力と実行の両方を実行します。 go fmt コマンド プログラム内では、呼び出した gofmt コマンドの後にマーカー -l と -w が追加され、次のように、指定されたコード パッケージ内のすべての Go 言語ソース ファイルのパスがパラメーターとして使用されます。hc@ubt:~$ go fmt -n pkgtool gofmt -l -w golang/goc2p/src/pkgtool/envir.go golang/goc2p/src pkgtoolenvir_test.go golang/goc2p/src/pkgtool/fpath.go golang/goc2p/src/pkgtool ipath.go golang/goc2p/src/pkgtool/pnode.go golang/goc2p/src/pkgtool/util.go golang/goc2p/src/pkgtool/util_test.go
gofmt コマンドのパラメータとしての Go 言語ソース ファイルへのパスは絶対パスではなく相対パスであることに注意してください。ただし、これはパラメータを短く見せるためだけです。したがって、 gofmt コマンドを直接実行する場合は、ソースコードファイルの絶対パスをパラメータとして使用しても問題ありません。実際、Go ソース コード ファイルまたは Go 言語ソース コード ファイルを含むディレクトリの相対パスまたは絶対パスは、gofmt コマンドのパラメータとして使用できます。 gofmt コマンドは、Go 言語のソースコードファイルが含まれるディレクトリの絶対パスまたは相対パスをパラメータとして指定した場合、そのディレクトリ内の Go 言語のソースコードファイルをターゲットソースコードファイルとして使用します。
gofmt コマンド実行時に go fmt コマンドプログラム内に追加されるタグが修正されました。別のタグのセットを使用したい場合は、 gofmt コマンドを直接使用する必要があります。次に、gofmt コマンドで受け入れられるすべてのタグを見てみましょう。以下の表に示すとおりです。
表 0-13 gofmt コマンドのマークの説明
タグの説明 | ||
---|---|---|
CPU を配置します。概要が指定されたファイルに書き込まれます。ファイルへのパスをこのタグの値として使用する必要があります。 | ||
コードを直接フォーマットするのではなく、フォーマット前後の違い (存在する場合) を表示します。 | ||
ターゲット ソース コード ファイル内のすべてのエラーを報告します。デフォルトでは、最初の 10 個のエラーのみが表示されます。 | ||
形式仕様を満たしておらず、コマンド プログラムによって標準出力に書き換える必要があるソース コード ファイルの絶対パスのみを出力します。書き換えられたすべてのコンテンツを標準出力に出力する代わりに。 | ||
「a[b:len(a)] -> a[b:]」の形式で書き換えルールを追加します。追加の書式設定ルールをカスタマイズする必要がある場合は、これを使用する必要があります。ルール文字列は、このタグの値として使用する必要があります。 | ||
ファイル内のコードを簡略化します。 | ||
結果を標準出力に出力するのではなく、書き換えたコンテンツをファイルに直接書き込みます。 |
功能 |
go fmt 命令 |
gofmt 命令 |
---|---|---|
格式化代码 | √ | √ |
列出不规范的源码文件 | √ | √ |
自动改写源码文件 | √ | √ |
显示对比信息 | × | √ |
提示全部错误 | × | √ |
简化代码 | × | √ |
自定义替换/重构辅助 | × | √ |
CPU概要记录 | × | √ |
最后,值得一提的是,当我们执行gofmt命令且没有加任何参数的时候,该命令将会进入到交互模式。在这种模式下,我们可以直接在命令行界面中输入源码,并以Ctrl-d结束。在Linux操作系统下,Ctrl-d代表EOF(End Of File,中文译为文件结束符)。需要注意的是,如果在一行的中间按下Ctrl-d,则表示输出“标准输入”的缓存区,所以这时必须连续按两次Ctrl-d。另外,在Windows操作系统下,Ctrl-z代表EOF,所以需要以Ctrl-z结束。在这之后,gofmt命令会像从源码文件中读取源码那样从命令行界面(也称为标准输入)读取源码,并在格式化后将结果打印到命令行界面(也称为标准输出)中。示例如下:
hc@ubt:~$ gofmt -r='fmt.Println(a)->fmt.Printf("%s\n", a)' if a=="print" {fmt.Println(a)} <----- 在此行的末尾键入回车和Ctrl-d。 warning: rewrite ignored for incomplete programs <----- 此行及以下就是命令输出的内容。 if a == "print" { fmt.Println(a) }
由上述示例可知,我们可以使用gofmt命令的交互模式格式化任意的代码片段。虽然会显示一行警告信息,但是格式化后的结果仍然会被打印出来。并且,在交互模式下,当我们输入的代码片段不符合Go语言的语法规则时,命令程序也会打印出错误提示信息。在其它方面,命令程序在交互模式与普通模式下的行为也是基本一致的。
以上がgo fmt コマンドの機能は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。