Rumah >pembangunan bahagian belakang >Golang >Mengapa Saya Tidak Boleh Mencampurkan Kepingan 'Meletup' dan Parameter Biasa dalam Fungsi Variadik Go?
Go tidak membenarkan mencampurkan kepingan "meletup" dengan parameter biasa dalam fungsi variadik. Ini jelas dalam contoh berikut:
func main() { stuff := []string{"baz", "bla"} foo("bar", stuff...) // Error: too many arguments in call to foo } func foo(s ...string) { fmt.Println(s) }
Menurut Spesifikasi Bahasa Go, hujah panjang boleh ubah boleh ditentukan dalam dua cara: menghitung unsur atau menggunakan kepingan sedia ada. Mencampurkan kedua-duanya adalah tidak dibenarkan.
Apabila elemen dihitung, hirisan baharu dibuat di mana unsur menjadi nilai parameter variadik. Walau bagaimanapun, apabila kepingan sedia ada digunakan dengan ..., tiada kepingan baharu dibuat dan kepingan asal menjadi parameter variadic.
Melalui kedua-dua elemen tunggal dan sekeping akan mengakibatkan jenis tidak padan, yang membawa kepada ralat pengkompil. Mencampurkan kedua-dua pilihan memerlukan peruntukkan kepingan baharu, tetapi Go tidak menyokong gelagat ini.
Mesej ralat "terlalu banyak argumen dalam panggilan ke foo" menunjukkan bahawa pengkompil menjangkakan satu kepingan atau senarai elemen , tetapi bukan gabungan kedua-duanya. Untuk menyelesaikan isu ini, sama ada alih keluar bahan... atau hitungkan elemen secara individu.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mencampurkan Kepingan 'Meletup' dan Parameter Biasa dalam Fungsi Variadik Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!