Adakah Saluran Lulus Rujukan dalam Go?

Barbara Streisand
Lepaskan: 2024-11-12 13:27:02
asal
691 orang telah melayarinya

Are Channels Passed by Reference in Go?

Adakah Saluran Diluluskan Secara Berkesan melalui Rujukan dalam Go?

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan