Pendapatan Nama Parameter dalam Go
Pertimbangkan kaedah Go berikut:
func (t *T) TMethod(data *testData) (interface{}, *error) { ... }
Jika anda ingin menentukan nama parameter (iaitu, data), cuba menggunakan kod berikut akan menghasilkan mendapatkan semula struktur name:
reflect.ValueOf(T).MethodByName("TMethod").Type.In(0).Elem().Name()
Malangnya, mendapatkan nama fungsi atau parameter kaedah tidak boleh dilaksanakan dalam Go. Ini terutamanya kerana nama parameter adalah tidak penting apabila memanggil fungsi tersebut. Sebaliknya, tumpuan terletak pada jenis dan susunannya. Selain itu, adalah dibenarkan untuk mentakrifkan fungsi atau kaedah tanpa memberikan nama kepada parameternya, seperti yang dilihat di bawah:
func NamelessParams(int, string) {}
Untuk maklumat lebih terperinci mengenai aspek ini, sila rujuk perbincangan mengenai Is unnamed arguments a thing in Pergi?
Sebagai alternatif, jika anda berhasrat untuk mewujudkan rangka kerja yang membenarkan pemindahan nilai kepada parameter dengan nama yang ditetapkan (untuk contohnya, memetakan parameter API kepada parameter fungsi/kaedah Go), pertimbangkan untuk menggunakan struct atau peta. Ini kerana struct dan peta membenarkan pengambilan semula medan dan kekunci yang dinamakan, masing-masing, melalui kaedah seperti Value.FieldByName() dan Type.FieldByName().
Atas ialah kandungan terperinci Bagaimana Saya Boleh Mendapatkan Nama Parameter Fungsi Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!