Dalam coretan kod yang disediakan, saluran c dicipta menggunakan fungsi make() dan dihantar ke fungsi jumlah . Timbul persoalan: adakah saluran secara tersirat diluluskan melalui rujukan dalam Go, walaupun tiada penuding eksplisit dibuat?
Jawapannya terletak pada gelagat unik make(). Secara teknikal, saluran disalin, kerana make() memperuntukkan memori pada timbunan, mencipta penunjuk di belakang tabir. Walau bagaimanapun, jenis penuding ini tidak didedahkan, menyerupai jenis rujukan.
Mengikut spesifikasi Go:
"Fungsi terbina dalam membuat mengambil jenis T, yang mestilah kepingan, peta atau jenis saluran, secara pilihan diikuti dengan senarai ungkapan khusus jenis Ia mengembalikan nilai jenis T (bukan *T)."
Dengan menggunakan make(), saluran dimulakan, membenarkannya untuk. digunakan sebagai jenis rujukan. Oleh itu, ia boleh dihantar tanpa mereplikasi data asas.
Ringkasnya, saluran diluluskan secara berkesan melalui rujukan dalam Go apabila dibuat menggunakan make. Ini terpakai pada struktur data lain seperti kepingan, peta, penunjuk dan fungsi. Sebaliknya, jenis data primitif (nombor, bool) dan struct boleh ubah disalin apabila dihantar ke fungsi.
Atas ialah kandungan terperinci Adakah Saluran Lulus Rujukan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!