Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengakses Pemalar dan Pembolehubah Tahap Pakej Apabila Dibayangi oleh Pembolehubah Tempatan dalam Go?

Bagaimana untuk Mengakses Pemalar dan Pembolehubah Tahap Pakej Apabila Dibayangi oleh Pembolehubah Tempatan dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-11-14 22:33:02753semak imbas

How to Access Constants and Package-Level Variables When Shadowed by Local Variables in Go?

Merujuk kepada Pemalar dan Pembolehubah Tahap Pakej Di Dalam Fungsi

Dalam kod Go yang disediakan, dalam fungsi utama, nama pembolehubah tempatan ditakrifkan, yang membayangi pemalar atau pembolehubah peringkat pakej dengan nama yang sama. Ini boleh membawa kepada kekeliruan dan tingkah laku yang salah.

Memahami Bayangan

Dalam Go, apabila pembolehubah baharu diisytiharkan dalam fungsi, ia mengambil keutamaan berbanding mana-mana pembolehubah lain dengan nama yang sama ditakrifkan pada tahap yang lebih tinggi (cth., dalam skop peringkat pakej). Ini dikenali sebagai pembayang boleh ubah.

Resolusi

Untuk merujuk kepada nama pembolehubah tahap pemalar atau pakej dalam fungsi utama, kami tidak boleh menggunakan nama pengecam secara langsung kerana ia menandakan fungsi pembolehubah peringkat. Sebaliknya, kita boleh menggunakan salah satu pendekatan berikut:

  • Menyimpan Nilai Pemalar atau Pembolehubah: Kita boleh menyimpan sementara nilai pembolehubah peringkat pemalar atau pakej dalam setempat pembolehubah dengan nama yang berbeza. Contohnya:
const name = "Yosua"

func main() {
    localName := name
    name := "Jobs"
    fmt.Println(name) // Jobs
    fmt.Println(localName) // Yosua
}
  • Menyediakan Fungsi Getter: Kita boleh mencipta fungsi yang mengembalikan nilai pembolehubah pemalar atau peringkat pakej. Contohnya:
const name = "Yosua"

func getName() string {
    return name
}

func main() {
    name := "Jobs"
    fmt.Println(name) // Jobs
    fmt.Println(getName()) // Yosua
}

Nota

Jika pembolehubah peringkat pakej diisytiharkan menggunakan var dan bukannya const, ia boleh dibayangi dan ditetapkan semula dalam fungsi. Dalam kes sedemikian, menggunakan salah satu pendekatan di atas memastikan nilai asal dikekalkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pemalar dan Pembolehubah Tahap Pakej Apabila Dibayangi oleh Pembolehubah Tempatan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn