我最近在 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) } }}但是后来我意识到现在命名空间“tasks”被变量“tasks”隐藏了。所以我想知道,一旦命名空间被变量隐藏,有没有办法仍然访问它?如果没有,是否有任何其他常用技术来处理这种情况。对于 Go 使用的所有奇怪的短命名空间(“url”、“bytes”、“strings”等),它似乎在为自己保留所有潜在的变量名称。有什么建议吗?
2 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
它与命名空间无关。这是范围界定的一般属性:
func foo() {
var a int
{
a := 42
// Cannot access the outer 'a' here.
}
}
解决方案与一般情况相同:如果要访问它们(外部作用域),请不要定义与外部作用域中定义的实体名称相同的实体。在上面的代码片段中,内部的“a”将被命名为例如。“a2”或“b”或除“a”之外的任何其他字符。
当然,dystroy 的回答也是有效的。它等于将外部的“a”重命名为其他名称。
我只是想指出您的问题是一般问题的特定实例,一般解决方案适用于它。
- 2 回答
- 0 关注
- 213 浏览
添加回答
举报
0/150
提交
取消