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

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

DDD
發布: 2024-12-07 01:59:15
原創
1003 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板