Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mendapatkan Nama Go Enum Tanpa Menulis Penukaran Rentetan Eksplisit?

Bagaimanakah Saya Boleh Mendapatkan Nama Go Enum Tanpa Menulis Penukaran Rentetan Eksplisit?

Barbara Streisand
Barbara Streisandasal
2024-12-07 07:45:17736semak imbas

How Can I Get Go Enum Names Without Writing Explicit String Conversions?

Mendapatkan Nama Enum dalam Go Tanpa Penukaran Rentetan Eksplisit

Dalam Go, enum biasanya dilaksanakan sebagai nilai integer yang diberikan pemalar. Walau bagaimanapun, mengakses nama enum tanpa mencipta kaedah String() secara eksplisit boleh menyusahkan.

Pertimbangkan contoh ini:

const (
    MERCURY = 1
    VENUS = iota
    EARTH
    MARS
    JUPITER
    SATURN
    URANUS
    NEPTUNE
    PLUTO
)

Untuk mendapatkan nama enum, seseorang mungkin mentakrifkan String() kaedah untuk setiap nilai enum, yang membawa kepada penaip semula berulang atau penjanaan kod. Adakah terdapat alternatif?

Menggunakan Alat Stringer

Go menyediakan alat rentetan, yang mengautomasikan penciptaan kaedah String() untuk pemalar. Dengan melaksanakan arahan berikut dalam direktori yang sama seperti kod di atas:

stringer -type=MERCURY

fail baharu mercury_string.go dijana dalam konteks pakej, mengandungi:

func (MERCURY) String() string

Kaedah ini membenarkan mendapatkan semula nama enum dengan mudah dan mengurangkan keperluan untuk penukaran rentetan eksplisit.

Tambahan Nota:

Walaupun teknik ini menyelesaikan isu mendapatkan nama enum tanpa kaedah String() yang jelas, perlu diingat bahawa teknik ini memerlukan penggunaan alat luaran dan mungkin tidak selalu boleh dilaksanakan dalam senario tertentu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Go Enum Tanpa Menulis Penukaran Rentetan Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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