Go Receiver: Memahami Pass by Value
Bertentangan dengan gerak hati, Go receiver diluluskan oleh nilai, menimbulkan persoalan mengapa ini berlaku memandangkan manfaat yang jelas daripada rujukan lulus.
Lulus mengikut Nilai dalam Go
Jawapannya terletak pada reka bentuk asas Go, di mana segala-galanya diluluskan oleh nilai. Ini memastikan ketekalan merentas bahasa, menghapuskan keperluan untuk membezakan antara senario rujukan lulus dan lulus.
Penerima sebagai Argumen
Apabila mentakrifkan kaedah pada sesuatu taip, penerima (cth., s dalam func (s *MyStruct) pointerMethod()) berkelakuan seperti hujah kepada kaedah itu. Memilih antara nilai atau penerima penunjuk adalah sama dengan memutuskan sama ada argumen fungsi harus menjadi nilai atau penunjuk.
Pertimbangan untuk Penerima Penunjuk
Jika kaedah itu perlu ubah suai penerima (cth., menukar medan s), penerima penunjuk (seperti dalam Kaedah penunjuk) mesti digunakan. Jika tidak, pengubahsuaian tidak akan kelihatan kepada pemanggil (seperti dalam valueMethod).
Kecekapan dan Ketekalan
Menggunakan penerima penuding boleh meningkatkan kecekapan jika penerima adalah besar . Ketekalan juga harus dipertimbangkan: jika sesetengah kaedah memerlukan penerima penunjuk, semua kaedah pada jenis harus menggunakan penerima penunjuk untuk mengekalkan set kaedah yang konsisten.
Penerima Nilai untuk Kecekapan dan Kesederhanaan
Untuk jenis kecil seperti jenis asas, kepingan dan struktur kecil, penerima nilai adalah cekap dan mudah difahami. Mereka adalah pilihan pilihan melainkan kaedah semantik memerlukan penerima penunjuk.
Atas ialah kandungan terperinci Mengapa Go Gunakan Nilai Pas untuk Penerima?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!