2014-09-19 102 views
1

我发现了以下错误下面导入代码:导入和未使用的错误

代码: 包主要

import (
    "log" 
    "net/http" 
    "os" 
    "github.com/emicklei/go-restful" 
    "github.com/emicklei/go-restful/swagger" 
    "./api" 
) 

错误:

.\main.go:9: imported and not used: "_/c_/Users/aaaa/IdeaProjects/app/src/api" 

是否有一个原因导入不工作,因为我有package api和文件存储在api文件夹下?

我用下面使用api在main.go

func main() { 
    // to see what happens in the package, uncomment the following 
    restful.TraceLogger(log.New(os.Stdout, "[restful] ", log.LstdFlags|log.Lshortfile)) 

    wsContainer := restful.NewContainer() 
    api := ApiResource{map[string]OxiResp{}} 
    api.registerLogin(wsContainer) 
    api.registerAccount(wsContainer) 
    api.registerLostLogin(wsContainer) 
    api.registerWallet(wsContainer) 
} 

回答

4

编译器查找实际使用包 ..不存在的事实。

您需要使用该软件包中的内容或删除导入。例如:

v := api.Something ... 

如果您在源文件中没有使用该软件包中的任何内容,则不需要导入它。也就是说,除非你想让init函数运行。在这种情况下,您可以使用忽略符号import _

编辑:

您的更新后,它将显示你在这里改写包导入:

api := ApiResource{map[string]OxiResp{}} 

声明了一个名为api变量。现在编译器认为它是一个变量,所以你实际上并没有使用api包。你正在使用api变量。

您有几个选项。

首先,你可以调用变量别的东西(也许我会做什么):

apiv := ApiResource{map[string]OxiResp{}} 

或者,你的别名导入(不是我会做什么..但仍然一个选项):

import (
    // others here 
    api_package "./api" 
) 

问题是编译器对使用什么感到困惑。 api包..或api变量已声明。

您还应该通过GOPATH而不是相对导入包。

1

首先,不要使用相对导入。

如果您的GOPATH包含/Users/aaaa/IdeaProjects/app/src,那么将您的包导入为api

接下来,您正在使用指向api :=的任务对api进行遮蔽。使用不同的名称。