Rumah >pembangunan bahagian belakang >Golang >Bolehkah Go Variadic Functions Mencampurkan Hujah Terhitung dan Hirisan Sedia Ada?

Bolehkah Go Variadic Functions Mencampurkan Hujah Terhitung dan Hirisan Sedia Ada?

DDD
DDDasal
2024-12-13 07:22:12913semak imbas

Can Go Variadic Functions Mix Enumerated Arguments and Existing Slices?

Mencampurkan Kepingan "Meletup" dan Parameter Biasa dalam Fungsi Variadik

Dalam Go, fungsi variadik membenarkan bilangan argumen yang sewenang-wenangnya. Walau bagaimanapun, adalah tidak mungkin untuk menggabungkan kedua-dua elemen terhitung dan kepingan sedia ada apabila menentukan argumen.

Sintaks Argumen Variadik

Nilai yang dihantar kepada parameter variadik boleh sama ada ditentukan melalui:

  1. Menghitung elemen individu: func(arg1, arg2, arg3 ...rentetan) {}
  2. Menggunakan hirisan sedia ada: func(s []rentetan) {}

Mencampurkan Elemen Terhitung dan Kepingan

Kod berikut tidak akan disusun:

func main() {
    stuff := []string{"baz", "bla"}
    foo("bar", stuff...) // compile error: too many arguments
}

func foo(s ...string) {}

Ini kerana Go tidak membenarkan mencampurkan dua sintaks. Apabila menyenaraikan elemen individu, kepingan baharu dibuat. Apabila menggunakan kepingan sedia ada, kepingan yang sama digunakan sebagai parameter variadik.

Sebab Pengehadan

Penghadan adalah disebabkan oleh cara Go memproses argumen variadik. Apabila menghitung elemen, kepingan baharu dicipta untuk menyimpan nilai. Walau bagaimanapun, jika kepingan sedia ada diluluskan, tiada kepingan baharu dibuat. Sebaliknya, kepingan yang diluluskan diperuntukkan terus kepada parameter variadic. Mencampurkan kedua-duanya memerlukan peruntukkan kepingan baharu, yang tidak disokong pada masa ini.

Atas ialah kandungan terperinci Bolehkah Go Variadic Functions Mencampurkan Hujah Terhitung dan Hirisan Sedia Ada?. 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