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
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 )
Menjalankan arahan rentetan:
stringer -type=Pill
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) + ")" }
Kaedah ini kemudiannya boleh digunakan untuk mendapatkan nama enum, contohnya:
fmt.Println(Pill(3).String()) // Paracetamol
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!