首頁 > 後端開發 > Golang > 列印 golang 清單的枚舉名稱

列印 golang 清單的枚舉名稱

王林
發布: 2024-02-10 18:21:07
轉載
623 人瀏覽過

打印 golang 列表的枚举名称

php小編魚仔為你介紹一個簡單而有效的方法,用於列印golang列表的枚舉名稱。在golang中,枚舉類型被表示為常數組,我們可以透過遍歷常數組並列印每個常數的名稱來實現這一目標。這種方法不僅簡單易懂,而且適用於任何包含枚舉類型的golang程式。透過以下幾步操作,你可以輕鬆地列印出golang列表的枚舉名稱。

問題內容

我有以下枚舉及其字串函數。 當我對特定的 animal 值使用 println 時,正確的 名稱被列印。但是當我將其列印為完整列表時,然後 僅列印它們的整數值。 當我列印動物園清單時如何列印動物名稱?

package main

import (
    "fmt"
)

type Animal int64

const (
    Goat Animal = iota
    Cat
    Dog
)

func (n Animal) String() string {
    switch n {
    case Goat:
        return "Goat"
    case Cat:
        return "Cat"
    case Dog:
        return "Dog"
    }
    return "?"
}

type Group struct {
    a, b Animal
}

type Zoo []Group

func main() {
    var g1,g2 *Group
    g1 = new(Group)
    g1.a = Goat
    g1.b = Cat
    g2 = new(Group)
    g2.a = Dog
    g2.b = Cat

    var z1 Zoo
    z1 = []Group{*g1,*g2}

    fmt.Println("Animal: ", Dog) // prints Dog
    fmt.Println(z1) // prints [{0 1} {3 1}]
}
登入後複製

解決方法

正如@greedy52所說,應該導出ab(這是正確的答案)。

但是,如果您想要保留它們private 並具有類似的輸出,只需在group 上實作string() 方法,如下所示:

func (g Group) String() string {
    return fmt.Sprintf("{%s %s}", g.a, g.b)
}
登入後複製

以上是列印 golang 清單的枚舉名稱的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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