Go では、enum の名前を取得するには、通常、次の定義が必要ですfunc (TheEnum) String() 文字列メソッド。ただし、特に多くの列挙型がある場合、これは面倒になる可能性があります。
1 つの代替方法は、標準ツール パッケージに含まれる Go のストリンガー ツールを使用することです。これを行うには、列挙型定義と同じディレクトリで次のコマンドを実行します。
stringer -type=Pill
これにより、func (Pill) String() 文字列メソッドの定義を含むファイルが作成されます。
package painkiller type Pill int const ( Placebo Pill = iota Aspirin Ibuprofen Paracetamol Acetaminophen = Paracetamol )
ストリンガー コマンドを実行します:
stringer -type=Pill
次のものを作成しますfile:
// Code generated by "stringer -type=Pill"; DO NOT EDIT. package painkiller import "strconv" func (p Pill) String() string { switch p { case Placebo: return "Placebo" case Aspirin: return "Aspirin" case Ibuprofen: return "Ibuprofen" case Paracetamol: return "Paracetamol" case Acetaminophen: return "Acetaminophen" } return "Pill(" + strconv.FormatInt(int64(p), 10) + ")" }
このメソッドは、列挙型の名前を取得するために使用できます。例:
fmt.Println(Pill(3).String()) // Paracetamol
ストリンガー ツールは、Go の go generated コマンドで使用できます。 1.4 では、列挙型ごとに func (TheEnum) String() 文字列メソッドが自動的に生成されます。
以上が`String()` メソッドを手動で定義せずに Go Enum の名前を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。