Cetak nama enumerasi senarai golang

王林
Lepaskan: 2024-02-10 18:21:07
ke hadapan
578 orang telah melayarinya

打印 golang 列表的枚举名称

editor php Yuzai memperkenalkan anda kepada kaedah yang mudah dan berkesan untuk mencetak nama penghitungan senarai golang. Dalam golang, jenis penghitungan diwakili sebagai kumpulan malar, dan kita boleh mencapainya dengan menggelung melalui kumpulan malar dan mencetak nama setiap pemalar. Kaedah ini bukan sahaja mudah dan mudah difahami, tetapi juga boleh digunakan untuk mana-mana program Golang yang mengandungi jenis terbilang. Dengan mengikuti langkah berikut, anda boleh mencetak nama penghitungan senarai golang dengan mudah.

Kandungan soalan

Saya mempunyai penghitungan berikut dan fungsi rentetannya. Apabila saya menggunakan println pada nilai haiwan tertentu, nilai yang betul Nama dicetak. Tetapi apabila saya mencetaknya sebagai senarai lengkap, maka Hanya nilai integer mereka dicetak. Bagaimanakah cara saya mencetak nama haiwan apabila saya mencetak senarai zoo?

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}]
}
Salin selepas log masuk

Penyelesaian

Seperti yang dikatakan @greedy52, ia harus dieksport ab (yang merupakan jawapan yang betul).

Tetapi jika anda ingin mengekalkannya private 并具有类似的输出,只需在 group 上实现 string() kaedah seperti ini:

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

Atas ialah kandungan terperinci Cetak nama enumerasi senarai golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!