Rumah >pembangunan bahagian belakang >Golang >Bolehkah Potongan Meletup dan Parameter Biasa Digabungkan dalam Fungsi Variadik Go?

Bolehkah Potongan Meletup dan Parameter Biasa Digabungkan dalam Fungsi Variadik Go?

DDD
DDDasal
2024-12-11 05:40:14816semak imbas

Can Exploded Slices and Regular Parameters Be Combined in Go's Variadic Functions?

Menggabungkan Kepingan "Meletup" dan Parameter Biasa dalam Fungsi Variadik

Bahasa Go membenarkan penggunaan fungsi variadik, yang menerima pembolehubah bilangan hujah. Walau bagaimanapun, terdapat had tertentu apabila cuba menggabungkan kepingan "meletup" (hirisan diluluskan sebagai elemen individu) dengan parameter biasa dalam fungsi sedemikian.

Pertimbangkan contoh berikut:

func main() {
    stuff := []string{"baz", "bla"}
    foo("bar", stuff...)
}

func foo(s ...string) {
    fmt.Println(s)
}

Dalam ini kod, kami menjangkakan untuk menghantar elemen hirisan barangan secara individu kepada fungsi foo. Walau bagaimanapun, pengkompil menimbulkan ralat kerana "terlalu banyak hujah." Ralat ini berlaku kerana Go tidak membenarkan mencampurkan kepingan yang meletup dengan parameter biasa.

Punca pengehadan ini terletak pada cara hujah variadic dihantar dalam Go. Apabila hirisan yang meletup digunakan, hirisan baharu dicipta dengan unsur-unsur hirisan yang meletup. Walau bagaimanapun, apabila hirisan biasa diluluskan menggunakan ..., tiada kepingan baharu dibuat. Sebaliknya, rujukan kepada kepingan sedia ada diluluskan.

Dalam contoh di atas, kami cuba untuk menentukan nilai parameter variadik menggunakan kedua-dua hirisan meletup dan parameter biasa ("bar") . Percampuran kaedah ini tidak dibenarkan oleh spesifikasi bahasa Go.

Untuk menyelesaikan isu ini, seseorang mesti memilih antara meletupkan kepingan atau menggunakannya sebagai parameter biasa. Contohnya:

// Explode the slice before passing to the variadic function
foo("bar", stuff[0], stuff[1])

// Pass the slice as a single argument
foo(append([]string{"bar"}, stuff...))

Dengan memahami batasan argumen variadic dalam Go, pembangun boleh mengelakkan kemungkinan ralat apabila mencampurkan pelbagai jenis parameter.

Atas ialah kandungan terperinci Bolehkah Potongan Meletup dan Parameter Biasa Digabungkan 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