一尘不染

导入和未使用错误

go

我收到以下导入代码出现错误:

代码:包主

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)
}

阅读 215

收藏
2020-07-02

共1个答案

一尘不染

编译器会寻找包的 实际使用 ..而不是它存在的事实。

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

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而不是相对地导入软件包。

2020-07-02