Rumah > Artikel > pembangunan bahagian belakang > Mengapakah saya tidak boleh menukar pemalar rentetan yang tidak ditaip kepada penunjuk rentetan?
Pemahaman Tidak boleh menukar (pemalar rentetan tidak ditaip) kepada rentetan*
Apabila cuba menetapkan pemalar rentetan kepada parameter yang memerlukan penuding kepada rentetan, seperti parameter StorageClassName dalam PersistentVolumeClaim anda, ia boleh mengakibatkan ralat pengkompil. Mesej ralat ini menunjukkan bahawa pengkompil tidak boleh menukar pemalar rentetan, yang merupakan pemalar yang tidak ditaip, kepada penuding kepada rentetan.
Menyelesaikan Isu
Untuk menyelesaikan masalah ini isu, anda perlu menggunakan pembolehubah tempatan rentetan, tetapkan nilai rentetan malar kepadanya, dan kemudian hantar alamat pembolehubah tempatan itu menggunakan operator &. Berikut ialah kod yang diperbetulkan:
<code class="go">persistentvolumeclaim := &apiv1.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{ Name: "mysql-pv-claim", }, Spec: apiv1.PersistentVolumeClaimSpec{ // Declare a string local and assign the constant string literal to it. manualStr := "manual" // Pass the address of the local variable as the parameter argument. StorageClassName: &manualStr, }, }</code>
Dengan membuat perubahan ini, anda mencipta pembolehubah rentetan ditaip dengan nilai rentetan malar, yang kemudiannya boleh dihantar sebagai penuding kepada rentetan kerana ia merujuk kepada pembolehubah rentetan. Ini dengan betul memenuhi keperluan jenis parameter StorageClassName.
Atas ialah kandungan terperinci Mengapakah saya tidak boleh menukar pemalar rentetan yang tidak ditaip kepada penunjuk rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!