Dalam Go, mengakses data dengan cekap adalah penting. Soalan ini meneroka konsep merujuk literal rentetan dan hadnya.
Tersurat rentetan, seperti yang ditunjukkan dalam contoh yang disediakan, tidak boleh alamatnya diambil secara langsung. Ini jelas dalam fungsi 'test1', yang mengakibatkan ralat kompilasi yang menyatakan bahawa ia tidak boleh mengakses alamat 'Hello World' literal.
Sekatan ini berpunca daripada semantik samar-samar yang dikaitkan dengan menangani literal. Ia perlu ditentukan sama ada alamat merujuk kepada nilai malar itu sendiri, membenarkan kemungkinan pengubahsuaian dan ralat masa jalan atau jika objek baharu harus diperuntukkan dan dimulakan dengan nilai literal.
Untuk memintas had ini, pembolehubah boleh digunakan, seperti yang ditunjukkan dalam 'test2.' Dengan memberikan literal kepada pembolehubah (mis., 'hej'), alamat kepada pembolehubah itu boleh diperolehi. Walau bagaimanapun, setiap kali 'test2' digunakan, peruntukan memori baharu berlaku untuk pembolehubah.
Sebagai alternatif, 'test3' menggunakan pembolehubah global ('konnichiwa') untuk mengelakkan peruntukan memori yang berlebihan. Walaupun ini cekap, ia mungkin mengakibatkan kekacauan kod di luar fungsi.
Dalam kes tersurat gubahan (jenis komposit dicipta dengan cepat), spesifikasi bahasa secara eksplisit membenarkan merujuk alamat mereka. Tersurat sedemikian, seperti yang digambarkan dalam contoh yang disediakan, boleh dialamatkan dan diberikan kepada antara muka.
Apabila bekerja dengan literal rentetan dalam Go, memahami batasan dan menerima pakai penyelesaian yang paling sesuai adalah penting. . Pembolehubah menawarkan fleksibiliti dalam menangani, manakala literal komposit memberikan pengecualian untuk kecekapan memori yang dipertingkatkan. Dengan mematuhi prinsip ini, pembangun boleh mengoptimumkan aplikasi Go mereka.
Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Mengakses Secara Terus Alamat String Literal dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!