首頁 >後端開發 >Golang >如何在沒有 String() 函數的情況下取得 Go 枚舉名稱?

如何在沒有 String() 函數的情況下取得 Go 枚舉名稱?

DDD
DDD原創
2024-11-27 09:10:09350瀏覽

How to Get Go Enum Names Without a String() Function?

如何在不使用 String() 函數的情況下取得枚舉名稱?

透過 iota 實現的 Go 枚舉,缺乏明確的 String() 函數,限制了直接檢索作為字串的枚舉名稱。本文探討了克服此限制並取得枚舉名稱而無需重新輸入標籤的替代方案。

一個可能的解決方案是利用標準工具包中的 stringer 工具。此工具會自動為您的枚舉類型產生 String() 函數。

例如,考慮以下枚舉定義:

const (
    MERCURY = 1
    VENUS = iota
    EARTH
    MARS
    JUPITER
    SATURN
    URANUS
    NEPTUNE
    PLUTO
)

為此枚舉產生String() 函數,在終端機中執行以下命令:

stringer -type=Planet

該指令會在目前工作目錄下建立檔案planet_string.go,包含產生的功能。該函數現在可用於獲取字串形式的行星名稱。

此外,您可以考慮使用基於結構或基於字串的常數。雖然這些方法需要重新輸入標籤一次,但它們在某些情況下提供了更大的靈活性。

以上是如何在沒有 String() 函數的情況下取得 Go 枚舉名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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