Rumah >pembangunan bahagian belakang >Golang >Bolehkah Fungsi Variadik Go Dijadikan Lebih Generik?
Walaupun Go mungkin tidak memberikan sokongan yang wujud untuk pengaturcaraan generik atau lebihan fungsi, ia membenarkan beberapa tahap fleksibiliti apabila menangani variadic fungsi.
Pertimbangkan senario biasa di mana anda mempunyai berbilang fungsi seperti berikut:
<code class="go">func (this Document) GetString(name string, defaults ...string) string { // ... Function implementation } func (this Document) GetInt(name string, defaults ...int) int { // ... Function implementation }</code>
Anda mungkin menghadapi pertindihan kod merentas fungsi ini. Adakah terdapat cara untuk meminimumkan lebihan ini?
Ya, walaupun Go kekurangan templat generik, anda boleh memanfaatkan antara muka{} untuk menyediakan penyelesaian generik.
<code class="go">func (this Document) Get(name string, defaults ...interface{}) interface{} { // ... Function implementation // This function returns `interface{}` instead of specific types. }</code>
Pendekatan ini membolehkan anda berinteraksi dengan fungsi mengikut cara berikut:
<code class="go">value := document.Get("index", 1).(int) // Type casting is required</code>
Jika anda lebih suka nilai nol, anda boleh menggunakan pendekatan ini:
<code class="go">value, ok := document.Get("index", 1).(int) // Returns `ok` to indicate type compatibility</code>
Walau bagaimanapun, pendekatan ini mungkin memerlukan overhed masa jalan. Anda dinasihatkan untuk menilai struktur kod anda dan tentukan sama ada fungsi berasingan atau penyelesaian berbeza lebih sesuai untuk keperluan khusus anda.
Atas ialah kandungan terperinci Bolehkah Fungsi Variadik Go Dijadikan Lebih Generik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!