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
Lepaskan: 2024-12-07 07:45:17
asal
695 orang telah melayarinya

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

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

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

func (MERCURY) String() string
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan