ホームページ > バックエンド開発 > Golang > `String()` メソッドを手動で定義せずに Go Enum の名前を取得するにはどうすればよいですか?

`String()` メソッドを手動で定義せずに Go Enum の名前を取得するにはどうすればよいですか?

DDD
リリース: 2024-12-07 01:59:15
オリジナル
1001 人が閲覧しました

How Can I Retrieve the Name of a Go Enum Without Manually Defining a `String()` Method?

Golang で String() メソッドを追加せずに Enum 名を取得することは可能ですか

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート