我最近在 Go 中編寫了以下代碼:import ( tasks "code.google.com/p/google-api-go-client/tasks/v1")func tasksMain(client *http.Client, argv []string) { taskapi, _ := tasks.New(client) tasklists, _ := taskapi.Tasklists.List().Do() for _, tasklist := range tasklists.Items { tasks, _ := taskapi.Tasks.List(tasklist.Id).Do() for _, task := range tasks.Items { log.Println(task.Id, task.Title) } }}但是后來我意識到現(xiàn)在命名空間“tasks”被變量“tasks”隱藏了。所以我想知道,一旦命名空間被變量隱藏,有沒有辦法仍然訪問它?如果沒有,是否有任何其他常用技術(shù)來處理這種情況。對于 Go 使用的所有奇怪的短命名空間(“url”、“bytes”、“strings”等),它似乎在為自己保留所有潛在的變量名稱。有什么建議嗎?
2 回答

MMTTMM
TA貢獻(xiàn)1869條經(jīng)驗 獲得超4個贊
它與命名空間無關(guān)。這是范圍界定的一般屬性:
func foo() {
var a int
{
a := 42
// Cannot access the outer 'a' here.
}
}
解決方案與一般情況相同:如果要訪問它們(外部作用域),請不要定義與外部作用域中定義的實體名稱相同的實體。在上面的代碼片段中,內(nèi)部的“a”將被命名為例如?!癮2”或“b”或除“a”之外的任何其他字符。
當(dāng)然,dystroy 的回答也是有效的。它等于將外部的“a”重命名為其他名稱。
我只是想指出您的問題是一般問題的特定實例,一般解決方案適用于它。
- 2 回答
- 0 關(guān)注
- 226 瀏覽
添加回答
舉報
0/150
提交
取消