Ketakserasian dalam Argumen Fungsi Variadik
Dalam Go, argumen fungsi variadic menyediakan cara yang mudah untuk menentukan parameter yang menerima bilangan argumen yang berubah-ubah. Walau bagaimanapun, terdapat sekatan tertentu apabila mencampurkan kepingan "meletup" dengan parameter biasa dalam fungsi variadik.
Had asasnya ialah hujah variadik mesti sama ada dinyatakan secara eksplisit atau diluluskan sebagai kepingan, tetapi bukan kedua-duanya. Apabila hirisan digunakan (...bahan), ia dihantar terus sebagai nilai parameter variadik tanpa membuat kepingan baharu. Sebaliknya, menyenaraikan elemen (cth., "bar", bahan...) menghasilkan hirisan baharu dengan hujah yang disediakan.
Pengkompil melarang mencampurkan kedua-dua bentuk ini kerana ia memerlukan peruntukan daripada kepingan baharu, yang tidak disokong oleh spesifikasi bahasa Go. Ralat "terlalu banyak hujah dalam panggilan ke foo" menunjukkan bahawa tandatangan fungsi menjangkakan satu parameter variadik, yang tidak boleh dipenuhi oleh kedua-dua elemen terhitung dan sekeping.
Penghadan ini memastikan bahawa parameter variadik menerima sama ada potong secara langsung atau kepingan yang baru dibuat dengan unsur-unsur yang disenaraikan. Ia menghalang kemungkinan kekeliruan dan ketidakkonsistenan dalam pengendalian hujah variadic.
Dalam bahasa seperti Ruby, sintaks *foo membenarkan pengembangan tatasusunan sedia ada menjadi parameter variadic. Walau bagaimanapun, dalam Go, ini tidak boleh dilakukan kerana pemisahan yang ketat antara elemen terhitung dan hirisan dalam hujah variadic.
Atas ialah kandungan terperinci Bolehkah Go Variadic Functions Mencampurkan Hujah dan Hirisan Terbilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!