首頁 >後端開發 >Golang >如何在不手動定義'String()”方法的情況下檢索 Go 枚舉的名稱?

如何在不手動定義'String()”方法的情況下檢索 Go 枚舉的名稱?

DDD
DDD原創
2024-12-07 01:59:151019瀏覽

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

Golang 中是否可以不加入String() 方法來取得Enum 名稱

在Go 中,要取得枚舉的名稱,通常需要定義func (TheEnum) String() 字串方法。但是,這可能很乏味,尤其是在有很多枚舉的情況下。

另一個選項是使用標準工具包中的 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

stringer工具可以與Go中的gogenerate指令一起使用1.4為每個枚舉自動產生一個 func (TheEnum) String() 字串方法。

以上是如何在不手動定義'String()”方法的情況下檢索 Go 枚舉的名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn