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
Lepaskan: 2024-12-11 05:40:14
asal
879 orang telah melayarinya

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)
}
Salin selepas log masuk

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...))
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan