variablesgonamespacesname-collisiongoogle-api-go-client

How to access a namespace hidden by a variable in Go?


I've recently wrote the following code in 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)
        }
    }
}

But then I realized that now the namespace "tasks" is hidden by the variable "tasks".

So I'm wondering, is there any way to still access the namespace once it's hidden by a variable? If not, is there any other common technique to handle this situation. With all the strangely short namespaces that Go uses ("url", "bytes", "strings", etc.), it seems it's reserving itself all kind of potential variable names. Any suggestion?


Solution

  • There's nothing "reserved" as you can both rename your variables or the name used to refer to the package.

    Simply give another alias to the package when importing :

    import (
        tsk "code.google.com/p/google-api-go-client/tasks/v1"
    )
    
    ...
    
    taskapi, _ := tsk.New(client)