Home  >  Article  >  Backend Development  >  Print enumeration name of golang list

Print enumeration name of golang list

王林
王林forward
2024-02-10 18:21:07579browse

打印 golang 列表的枚举名称

php Xiaobian Yuzai introduces you to a simple and effective method for printing the enumeration name of the golang list. In golang, enumeration types are represented as constant groups, and we can achieve this by looping through the constant group and printing the name of each constant. This method is not only simple and easy to understand, but also applicable to any Golang program containing enumerated types. By following the following steps, you can easily print out the enumeration name of the golang list.

Question content

I have the following enumeration and its string functions. When I use println on a specific animal value, the correct The name is printed. But when I print it as a complete list, then Only their integer values ​​are printed. How do I print the animal names when I print a zoo list?

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}]
}

Solution

As @greedy52 said, a and b should be exported (which is the correct answer).

However, if you want to keep them private and have similar output, just implement the string() method on the group like this:

func (g Group) String() string {
    return fmt.Sprintf("{%s %s}", g.a, g.b)
}

The above is the detailed content of Print enumeration name of golang list. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete