首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问Go中变量隐藏的命名空间?

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

Stack Overflow用户
提问于 2013-09-06 06:45:24
回答 2查看 578关注 0票数 3

我最近用Go编写了以下代码:

代码语言:javascript
复制
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)
        }
    }
}

但后来我意识到,现在名称空间“任务”被变量“任务”所隐藏。

所以我想知道,一旦名称空间被一个变量隐藏了,是否还能继续访问它呢?如果没有,是否有其他常见的技术来处理这种情况。使用所有奇怪的短名称空间("url“、”字节“、”字符串“等),它似乎保留了所有可能的变量名称。有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-06 06:48:17

没有“保留”,因为您可以重命名变量或用于引用包的名称。

导入时只需为包提供另一个别名:

代码语言:javascript
复制
import (
    tsk "code.google.com/p/google-api-go-client/tasks/v1"
)

...

taskapi, _ := tsk.New(client)
票数 6
EN

Stack Overflow用户

发布于 2013-09-06 07:50:25

它与名称空间无关。这是范围界定的一个一般属性:

代码语言:javascript
复制
func foo() {
        var a int
        {
            a := 42
            // Cannot access the outer 'a' here.
        }
}

解决方案与一般情况相同:如果您想访问外部的实体(外部的实体),不要定义与在外部作用域中定义的实体相同的实体。在上面的片段中,内部'a‘将被命名为eg。“a2”或“b”或除“a”以外的任何东西。

当然,dystroy的回答也是正确的。它等于将外部'a‘重命名为其他东西。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18651558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档