Pembebanan Fungsi/Kaedah dalam Go
Pembebanan lebihan fungsi ialah teknik di mana berbilang fungsi dengan nama yang sama tetapi tandatangan berbeza boleh wujud bersama dalam satu skop. Dalam C , sebagai contoh, adalah mungkin untuk mentakrifkan versi fungsi yang berbeza dengan jenis parameter yang berbeza:
void func(int param); void func(char* param);
Walau bagaimanapun, ini tidak disokong dalam bahasa pengaturcaraan Go.
Ralat dalam Kod
Ralat yang anda hadapi semasa cuba menentukan fungsi terlampau beban dalam Go berpunca daripada keputusan reka bentuk bahasa untuk menekankan keselamatan jenis. Fungsi terlampau beban boleh memperkenalkan isu kekaburan dan pemeriksaan jenis, yang Go bertujuan untuk mengelakkan.
Penyelesaian
Untuk menangani isu ini apabila mengalihkan pustaka C anda ke Go, buat fungsi pembalut berasingan untuk setiap tandatangan unik fungsi C asal:
func curl_wrapper_easy_setopt_str(CURL *curl, CURLoption option, char* param) func curl_wrapper_easy_setopt_long(CURL *curl, CURLoption option, long param)
Pendekatan ini memastikan keselamatan jenis dan menghalang kekaburan dalam kod.
Pendekatan Go terhadap Argumen Pilihan
Walaupun Go tidak menyokong lebihan fungsi secara langsung, ia menyediakan mekanisme untuk mensimulasikan hujah pilihan menggunakan fungsi variadic. Sebagai contoh, fungsi berikut mengambil bilangan integer sewenang-wenangnya dan menjumlahkannya:
func sum(args ...int) int { result := 0 for _, arg := range args { result += arg } return result }
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa fungsi variadik datang pada kos pemeriksaan jenis, kerana pengkompil tidak dapat mengesahkan jenis daripada hujah yang dihantar kepada fungsi.
Atas ialah kandungan terperinci Adakah Go Support Function Overloading, dan Jika Tidak, Apakah Alternatifnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!