Penyahrujukan Penunjuk dalam Go Dijelaskan
Untuk memahami penyahrujukan penuding, kami akan menyelidiki contoh kod Go yang anda berikan. Dalam contoh asal, beberapa contoh struct Vertex dicipta, termasuk *q yang merupakan penunjuk kepada Vertex. Dalam versi anda yang diubah suai, anda menetapkan nilai penyahrujukan *q kepada t. Walau bagaimanapun, perbezaan utama ialah dalam pengubahsuaian anda, anda menukar q.X kepada 4, yang mengemas kini tika asal yang ditunjuk oleh q.
Penunjuk *q menunjuk kepada tika struct asas yang sama seperti q. Jadi, dengan menukar nilai q.X, anda mengubah struktur asal, bukan mencipta salinan. Oleh itu, apabila anda mencetak t selepas mengubah suai q.X, anda akan dapati bahawa t tidak mencerminkan perubahan kerana t menyimpan salinan struct asal dan tidak menunjuk ke lokasi yang sama seperti q.
Untuk memerhati perubahan ini melalui penuding, anda harus menetapkan q secara langsung kepada t dan bukannya membatalkan rujukannya. Dalam contoh C/C yang anda nyatakan, tingkah laku adalah serupa. Penyahrujukan penunjuk (cth., *q) mencipta salinan nilai, manakala penuding diberikan secara langsung (cth., t = q) membolehkan anda mengubah suai nilai asal melalui penuding.
Atas ialah kandungan terperinci Bagaimanakah Penyahrujukan Penunjuk Mempengaruhi Penyalinan Struktur dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!