Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mendapatkan Nama Go Enum Tanpa Menentukan Kaedah `String()` secara Manual?

Bagaimanakah Saya Boleh Mendapatkan Nama Go Enum Tanpa Menentukan Kaedah `String()` secara Manual?

DDD
Lepaskan: 2024-12-07 01:59:15
asal
1010 orang telah melayarinya

How Can I Retrieve the Name of a Go Enum Without Manually Defining a `String()` Method?

Adakah mungkin untuk mendapatkan nama Enum tanpa menambah kaedah String() dalam Golang

Dalam Go, untuk mendapatkan nama enum, ia biasanya perlu untuk menentukan kaedah rentetan func (TheEnum) String(). Walau bagaimanapun, ini boleh membosankan, terutamanya jika terdapat banyak enum.

Satu alternatif ialah menggunakan alat rentetan Go daripada pakej alat standard. Ini boleh dilakukan dengan menjalankan arahan berikut dalam direktori yang sama seperti definisi enum anda:

stringer -type=Pill
Salin selepas log masuk
Salin selepas log masuk

Ini akan mencipta fail yang mengandungi definisi kaedah rentetan func (Pil) String().

package painkiller

type Pill int

const (
    Placebo Pill = iota
    Aspirin
    Ibuprofen
    Paracetamol
    Acetaminophen = Paracetamol
)
Salin selepas log masuk

Menjalankan arahan rentetan:

stringer -type=Pill
Salin selepas log masuk
Salin selepas log masuk

Mencipta yang berikut fail:

// Code generated by "stringer -type=Pill"; DO NOT EDIT.

package painkiller

import "strconv"

func (p Pill) String() string {
    switch p {
    case Placebo:
        return "Placebo"
    case Aspirin:
        return "Aspirin"
    case Ibuprofen:
        return "Ibuprofen"
    case Paracetamol:
        return "Paracetamol"
    case Acetaminophen:
        return "Acetaminophen"
    }
    return "Pill(" + strconv.FormatInt(int64(p), 10) + ")"
}
Salin selepas log masuk

Kaedah ini kemudiannya boleh digunakan untuk mendapatkan nama enum, contohnya:

fmt.Println(Pill(3).String()) // Paracetamol
Salin selepas log masuk

Alat rentetan boleh digunakan dengan arahan go generate dalam Go 1.4 untuk menjana kaedah rentetan func (TheEnum) String() secara automatik untuk setiap enum.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Go Enum Tanpa Menentukan Kaedah `String()` secara Manual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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