透過函數級變數存取常數或包級變數
在Go 中,通常在套件中宣告常數或變數級別,使它們可以在整個包中訪問。但是,當變數也在函數層級宣告時,它在函數作用域內優先於套件層級變數。
我們如何引用常數或套件層級變數而不是函數-
解釋
不幸的是,當函數級變數同名時,沒有直接的方法來引用包級變數存在。根據 Go 規範,區塊內宣告的任何識別碼(包括函數)優先於該區塊範圍內包層級聲明的識別碼。
解決方法
要同時存取包級和函數級變量,請考慮以下解決方法:
1.使用不同的解決方法:
1.使用不同的名稱
如果可能,請對函數級和包級變數使用不同的名稱以避免衝突。這允許您獨立存取兩個變數。
2.保存包級變數的副本
在為函數級變數賦值之前,將包級變數的副本儲存在具有不同名稱的新變數中。這樣,即使在函數的作用域內,您也可以引用包級變數。
3.建立函數
另一種方法是建立一個傳回包級變數值的函數。這允許您透過呼叫函數級變數範圍內的函數來存取包級變數。以上是Go中存在同名函數級變數時如何存取包級變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!