Rumah >pembangunan bahagian belakang >Golang >Mengapa Saya Tidak Boleh Mencampurkan Kepingan 'Meletup' dan Parameter Biasa dalam Fungsi Variadik Go?

Mengapa Saya Tidak Boleh Mencampurkan Kepingan 'Meletup' dan Parameter Biasa dalam Fungsi Variadik Go?

Susan Sarandon
Susan Sarandonasal
2024-12-17 19:13:19519semak imbas

Why Can't I Mix

Mencampurkan Kepingan "Meletup" dan Parameter Biasa dalam Fungsi Variadik

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn