Rumah > Artikel > pembangunan bahagian belakang > Bila hendak menggunakan Rujukan Penunjuk lwn Nilai untuk Medan Terbenam dalam Go?
Pembenaman: Bila Perlu Menggunakan Penunjuk vs. Rujukan Nilai
Apabila menggabungkan satu struktur dalam yang lain di Golang, pilihan timbul antara menggunakan penunjuk atau rujukan nilai. Pertimbangkan coretan kod berikut:
<code class="go">type Job struct { Command string *log.Logger }</code>
Dalam contoh ini, kami telah membenamkan jenis *log.Logger, yang diwakili oleh penunjuk, dalam struktur Kerja. Sebagai alternatif, kami boleh menggunakan rujukan nilai seperti di bawah:
<code class="go">type Job struct { Command string log.Logger }</code>
Walaupun kedua-dua pendekatan mencapai pembenaman, implikasinya berbeza. Menurut spesifikasi Go, medan terbenam menyokong sama ada jenis itu sendiri atau penunjuk kepada jenis bukan antara muka. Yang penting, jenis yang dibenamkan tidak boleh menjadi jenis penuding.
Membenamkan penuding, yang dikenali sebagai "penunjuk tepi benam," menawarkan kelebihan khusus. Pertama, ia membenarkan memanfaatkan fungsi yang mengikut corak NewX, di mana struktur dimulakan dan dikembalikan melalui rujukan. Kedua, ia membolehkan penetapan dinamik kejadian berbeza kepada jenis terbenam pada masa jalan.
Sebagai contoh, pertimbangkan kod berikut:
<code class="go">type Bitmap struct{ data [4][5]bool } type Renderer struct{ *Bitmap //Embed by pointer on uint8 off uint8 }</code>
Dalam contoh ini, jenis Renderer membenamkan Peta Bit oleh rujukan. Ini membenarkan satu tika Bitmap berfungsi sebagai tika terbenam untuk beberapa tika Renderer, setiap satu dengan set aksaranya yang unik. Output kod ini menunjukkan cara berbilang pemapar boleh beroperasi pada struktur data asas yang sama.
OXXO OXOO OXOO OXOO .@@. .@.. .@.. .@..
Sebaliknya, membenamkan rujukan nilai tidak memberikan kelebihan ini. Walau bagaimanapun, ia tidak memerlukan instantiasi jenis terbenam untuk mengakses kaedahnya. Akhirnya, keputusan antara menggunakan penunjuk atau rujukan nilai bergantung pada keperluan khusus aplikasi dan gelagat yang diingini untuk medan terbenam.
Atas ialah kandungan terperinci Bila hendak menggunakan Rujukan Penunjuk lwn Nilai untuk Medan Terbenam dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!