为了账号安全,请及时绑定邮箱和手机立即绑定

如何访问 Go 中被变量隐藏的命名空间?

如何访问 Go 中被变量隐藏的命名空间?

Go
手掌心 2021-06-20 16:17:05
我最近在 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”重命名为其他名称。


我只是想指出您的问题是一般问题的特定实例,一般解决方案适用于它。


查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信