Print enumeration name of golang list

王林
Release: 2024-02-10 18:21:07
forward
579 people have browsed it

打印 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}]
}
Copy after login

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)
}
Copy after login

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!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!