Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya boleh mengakses pemalar atau pembolehubah peringkat atas dalam Go apabila pembolehubah tempatan dengan nama yang sama wujud?
Dalam Go, adalah mungkin untuk mengisytiharkan pembolehubah dengan skop berbeza: setempat (skop fungsi) dan peringkat atas (pakej atau skop fail). Kadangkala, anda mungkin menghadapi situasi di mana anda ingin merujuk kepada pemalar atau pembolehubah peringkat atas dalam skop fungsi, di mana pembolehubah tempatan dengan nama yang sama wujud.
Pertimbangkan coretan kod berikut:
package main import "fmt" const name = "Yosua" // or var name string = "James" func main() { name := "Jobs" fmt.Println(name) }
Soalan: Bagaimanakah kita boleh merujuk kepada nama pemalar dan bukannya pembolehubah tempatan?
Jawapan:
Mengakses pembolehubah skop tertutup di hadapan pembolehubah tempatan dengan nama yang sama tidak mungkin. Walaupun pembolehubah tempatan berada dalam skop, ia membayangi pembolehubah luar dalam fungsi, menjadikannya tidak boleh diakses.
Spesifikasi bahasa Go menyatakan:
An identifier declared in a block may be redeclared in an inner block. While the identifier of the inner declaration is in scope, it denotes the entity declared by the inner declaration.
Alternatif:
Jika anda perlu mengakses kedua-dua pembolehubah peringkat atas dan setempat secara serentak, pertimbangkan untuk menggunakan nama yang berbeza. Walau bagaimanapun, jika itu tidak dapat dilaksanakan, anda boleh menggunakan alternatif berikut:
Tugaskan kepada Pembolehubah Baharu buat sementara waktu:
Contohnya:
cname := name name := "Jobs" fmt.Println(name) fmt.Println(cname)
Dedahkan Pembolehubah Tahap Atas Secara Tidak Langsung:
Sebagai contoh :
func getName() string { return name } name := "Jobs" fmt.Println(name) fmt.Println(getName())
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengakses pemalar atau pembolehubah peringkat atas dalam Go apabila pembolehubah tempatan dengan nama yang sama wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!