Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mendapatkan Nama Parameter Kaedah dalam Go?

Bagaimanakah Saya Boleh Mendapatkan Nama Parameter Kaedah dalam Go?

DDD
Lepaskan: 2024-12-26 13:19:13
asal
458 orang telah melayarinya

How Can I Retrieve Method Parameter Names in Go?

Mendapatkan semula Nama Parameter Kaedah dalam Go

Dalam Go, mengakses nama parameter kaedah boleh menjadi mencabar. Tidak seperti kebanyakan bahasa lain, Go tidak menyimpan nama parameter dalam fungsi atau jenis kaedah itu sendiri.

Pertimbangkan kaedah berikut:

func (t *T) TMethod(data *testData) (interface{}, *error) {
    ...
}
Salin selepas log masuk

Untuk mendapatkan nama data parameter menggunakan pantulan, anda boleh mencuba yang berikut:

reflect.ValueOf(T).MethodByName("TMethod").Type.In(0).Elem().Name()
Salin selepas log masuk

Walau bagaimanapun, ini akan mengembalikan nama jenis data, iaitu testData. Sebab di sebalik tingkah laku ini ialah sifat unik fungsi dalam Go.

Mengapa Nama Parameter Tidak Disimpan

Dalam Go, jenis fungsi mewakili inputnya semata-mata dan jenis keluaran. Nama parameter dianggap maklumat tidak penting kerana ia tidak mempunyai kaitan dengan cara fungsi dipanggil atau dilaksanakan. Ini memudahkan sistem jenis bahasa.

Pertimbangkan Perkara ini:

  • Dua fungsi dengan parameter yang sama dan jenis hasil mempunyai jenis fungsi yang sama, tanpa mengira parameter nama.
  • Parameter boleh tidak dinamakan (mis., func foo(int, string)), menjadikan nama mereka tidak relevan.

Alternatif Kemungkinan

Memandangkan nama parameter tidak boleh diperoleh melalui refleksi, pertimbangkan alternatif berikut:

  • Menggunakan Structs: Structs membenarkan bidang bernama. Anda boleh memetakan parameter masuk ke medan struct menggunakan pantulan (cth., reflect.Type.FieldByName).
  • Menggunakan Peta: Peta sesuai untuk memetakan parameter masuk kepada nilai yang dinamakan.

Ingat, Go mengutamakan keselamatan jenis dan kesederhanaan berbanding parameter terperinci maklumat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Parameter Kaedah dalam Go?. 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