首頁 >後端開發 >Golang >當 Go 中的局部變數隱藏時,如何存取常數和包級變數?

當 Go 中的局部變數隱藏時,如何存取常數和包級變數?

Susan Sarandon
Susan Sarandon原創
2024-11-14 22:33:02752瀏覽

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

引用函數內部的常數和套件層級變數

在提供的Go 程式碼中,在main 函數中,定義了一個局部變數名稱,它遮蔽了常數或具有相同名稱的包級變數。這可能會導致混亂和不正確的行為。

理解遮蔽

在 Go 中,當在函數中宣告新變數時,它優先於在函數中定義的任何其他同名變數。更高級別(例如,在包級別範圍內)。這稱為變數遮蔽。

解決方案

要在主函數中引用常數或包級變數名稱,我們不能直接使用識別符名稱,因為它表示函數- 層級變數。相反,我們可以使用以下方法之一:

  • 保存常數或變數值:我們可以將常數或包級變數的值暫時儲存在本地具有不同名稱的變量。例如:
const name = "Yosua"

func main() {
    localName := name
    name := "Jobs"
    fmt.Println(name) // Jobs
    fmt.Println(localName) // Yosua
}
  • 提供Getter函數:我們可以建立一個傳回常數或包級變數值的函數。例如:
const name = "Yosua"

func getName() string {
    return name
}

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

注意

如果使用 var 而不是 const 聲明包級變量,則可以在函數內進行隱藏和重新分配。在這種情況下,使用上述方法之一可確保保留原始值。

以上是當 Go 中的局部變數隱藏時,如何存取常數和包級變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn