Mengapa Slice dan Peta Berkelakuan Berbeza sebagai Parameter
Dalam Go, jenis rujukan slice dan peta mempamerkan gelagat berbeza apabila diluluskan sebagai parameter fungsi. Peta, sebagai penunjuk kepada struktur data, mencerminkan sebarang pengubahsuaian yang dibuat pada elemennya dalam fungsi. Walau bagaimanapun, elemen baharu yang ditambahkan pada kepingan, iaitu struktur yang menyimpan penunjuk tatasusunan, panjang dan kapasiti, tidak ditunjukkan dalam hujah.
Perbezaan ini berpunca daripada pelaksanaan asas:
Tingkah laku ini dipengaruhi lagi oleh semantik nilai pas Go, di mana salinan daripada nilai dihantar ke fungsi. Peta, sebagai penunjuk, masih diluluskan oleh nilai, tetapi salinan masih menunjuk kepada struktur data asas yang sama. Ini membolehkan pengubahsuaian ditunjukkan dalam asal. Walau bagaimanapun, apabila hirisan diluluskan, salinan pengepala hirisan dibuat dan sebarang perubahan pada salinan itu tidak disebarkan kembali kepada asal.
Untuk mencapai gelagat yang serupa untuk hirisan, seseorang perlu menghantar penunjuk untuk menghiris, dengan berkesan menjadikannya penunjuk tersembunyi. Walau bagaimanapun, amalan ini jarang digunakan, dan sebaliknya, pendekatan yang lebih biasa ialah mengembalikan kepingan baharu dengan pengubahsuaian yang diingini.
Atas ialah kandungan terperinci Mengapa Peta dan Slices Go Berperilaku Berbeza Apabila Diluluskan sebagai Parameter Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!