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