首页 >后端开发 >Golang >打印 golang 列表的枚举名称

打印 golang 列表的枚举名称

王林
王林转载
2024-02-10 18:21:07623浏览

打印 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删除