ホームページ >バックエンド開発 >Golang >明示的な文字列変換を記述せずに Go Enum 名を取得するにはどうすればよいですか?

明示的な文字列変換を記述せずに Go Enum 名を取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-07 07:45:17728ブラウズ

How Can I Get Go Enum Names Without Writing Explicit String Conversions?

明示的な文字列変換を行わずに Go で列挙型名を取得する

Go では、通常、列挙型は整数値が割り当てられた定数として実装されます。ただし、String() メソッドを明示的に作成せずに列挙名にアクセスするのは面倒な場合があります。

次の例を考えてみましょう:

const (
    MERCURY = 1
    VENUS = iota
    EARTH
    MARS
    JUPITER
    SATURN
    URANUS
    NEPTUNE
    PLUTO
)

列挙名を取得するには、String() を定義できます。各列挙値のメソッドを使用すると、繰り返しの再入力やコード生成が発生します。代替手段はありますか?

ストリンガー ツールの使用

Go には、定数の String() メソッドの作成を自動化するストリンガー ツールが用意されています。上記のコードと同じディレクトリで次のコマンドを実行すると、

stringer -type=MERCURY

次の内容を含む新しいファイル mercury_string.go がパッケージ コンテキストに生成されます。

func (MERCURY) String() string

このメソッドにより、 enum 名を簡単に取得し、明示的な文字列変換の必要性を減らします。

追加注:

この手法は、明示的な String() メソッドを使用せずに列挙名を取得する問題を解決しますが、外部ツールの使用が必要であり、特定のシナリオでは常に実行可能であるとは限らないことに注意してください。

以上が明示的な文字列変換を記述せずに Go Enum 名を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。