Rumah >pembangunan bahagian belakang >Golang >Mengapa Kaedah Pergi Tidak Boleh Ditakrifkan pada *T Digunakan oleh T?
Mengapa Go Tidak Membenarkan Set Kaedah pada *T untuk Digunakan oleh T
Dalam Go, kaedah yang ditakrifkan pada jenis nilai T boleh digunakan oleh kedua-dua T dan *T, manakala kaedah yang ditakrifkan pada jenis penunjuk *T tidak boleh digunakan oleh T. Pembezaan yang kelihatan sewenang-wenang ini berpunca daripada kerumitan memori dalam sistem komputer.
Ketidakupayaan untuk Mendapatkan Penunjuk pada Permintaan
Pertimbangkan kes di mana kaedah pada *T akan dipanggil menggunakan pembolehubah T. Untuk mencapai ini, penunjuk kepada pembolehubah T mesti diperolehi. Walau bagaimanapun, mendapatkan penuding tidak selalu dijamin dapat dilakukan.
Spesifikasi Go menyatakan dengan jelas syarat di mana alamat operasi (&) boleh dilakukan. Ini termasuk mengakses pembolehubah, arahan penunjuk dan operasi pengindeksan tatasusunan. Walau bagaimanapun, ia tidak termasuk mengakses pembolehubah yang disimpan dalam peta, seperti dalam contoh berikut:
<code class="go">res := TMap["key"].pointerMethod()</code>
Dalam kes sedemikian, mendapatkan penunjuk kepada pembolehubah adalah tidak praktikal, kerana ini akan mengenakan kekangan pada pelaksanaan masa jalan struktur data seperti peta.
Akibat Reka Bentuk
Keputusan reka bentuk ini mempunyai kebaikan dan keburukan:
Kelebihan:
Kelemahan:
Atas ialah kandungan terperinci Mengapa Kaedah Pergi Tidak Boleh Ditakrifkan pada *T Digunakan oleh T?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!