Go では、 C などの言語で知られるマクロはネイティブにサポートされていません。代わりに、開発者は同様の機能に対して 2 つの主要なアプローチを利用するオプションがあります。
Go では、コード生成による「メタプログラミング」が可能です。この手法には、実行時に動的構成や動作を組み込むことができるコードを作成することが含まれます。
あるいは、Go は、リンク段階での「シンボル置換」によって実装される「マジック変数/定数」を提供します。このメカニズムにより、文字列定数を定義し、-ldflags オプションを使用してビルド時に値を割り当てることができます。
$ go install -ldflags='-X foo.Bar="my super cool string"'
提供された例では、foo パッケージ内の foo.Bar 定数は値「my super」に設定されています。クールな文字列」をリンク時に使用します。この値はコンパイルされたバイナリの読み取り専用データ セグメント内に埋め込まれ、元の定数定義の永続的な代替を提供します。
このアプローチの利点は次のとおりです。
以上がGo でマクロのような機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。