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) { ... }
Untuk mendapatkan nama data parameter menggunakan pantulan, anda boleh mencuba yang berikut:
reflect.ValueOf(T).MethodByName("TMethod").Type.In(0).Elem().Name()
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:
Alternatif Kemungkinan
Memandangkan nama parameter tidak boleh diperoleh melalui refleksi, pertimbangkan alternatif berikut:
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!