Merujuk Pemalar dan Pembolehubah Tahap Pakej Daripada Pembolehubah Tahap Fungsi
Dalam Go, adalah perkara biasa untuk menggunakan bayang-bayang untuk mengisytiharkan pembolehubah atau pemalar dengan nama yang sama dalam skop yang berbeza. Walaupun ini berguna, ada kalanya anda perlu merujuk kepada pembolehubah tahap pemalar atau pakej asal dan bukannya pembolehubah peringkat fungsi.
Malangnya, dalam Go, tidak mungkin merujuk terus kepada pembolehubah pemalar atau peringkat pakej apabila pembolehubah tempatan dengan nama yang sama wujud. Ini disebabkan oleh konsep skop dan keutamaan pengkompil Go untuk pembolehubah tempatan berbanding pengisytiharan peringkat lebih tinggi.
Untuk mengakses pembolehubah peringkat pemalar atau pakej asal, anda perlu menggunakan teknik alternatif. Satu pendekatan adalah untuk menyimpan nilai dalam pembolehubah sementara sebelum menetapkan semula pembolehubah tempatan:
cname := name name = "Jobs" fmt.Println(name) // Prints "Jobs" fmt.Println(cname) // Prints "Yosua"
Pilihan lain ialah mencipta fungsi yang menyediakan akses kepada pembolehubah peringkat pemalar atau pakej:
func getName() string { return name } name = "Jobs" fmt.Println(name) // Prints "Jobs" fmt.Println(getName()) // Prints "Yosua"
Dengan menggunakan teknik ini, anda boleh mengakses kedua-dua pembolehubah tempatan dan pemalar asal atau pembolehubah peringkat pakej secara serentak. Walau bagaimanapun, perlu diingat bahawa penyelesaian ini mungkin tidak selalu menjadi penyelesaian yang paling elegan atau cekap dan pertimbangan yang teliti harus diberikan untuk mengelakkan konflik penamaan dalam kod anda.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pembolehubah Tahap Pakej atau Malar Apabila Dibayangkan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!