导入和未使用错误

Pas*_*per 3 go

我遇到以下导入代码错误:

代码:包主

import (
    "log"
    "net/http"
    "os"
    "github.com/emicklei/go-restful"
    "github.com/emicklei/go-restful/swagger"
    "./api"
)
Run Code Online (Sandbox Code Playgroud)

错误:

.\main.go:9: imported and not used: "_/c_/Users/aaaa/IdeaProjects/app/src/api"
Run Code Online (Sandbox Code Playgroud)

鉴于我已经将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)
}
Run Code Online (Sandbox Code Playgroud)

Sim*_*ead 5

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

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

v := api.Something ...
Run Code Online (Sandbox Code Playgroud)

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

编辑:

更新之后,您似乎在这里覆盖了包导入:

api := ApiResource{map[string]OxiResp{}}
Run Code Online (Sandbox Code Playgroud)

声明了一个名为的变量api。现在,编译器认为它是一个变量,因此您实际上并没有使用该apiapi

您有几种选择。

首先,您可以将该变量称为其他变量(可能是我会做的事情):

apiv := ApiResource{map[string]OxiResp{}}
Run Code Online (Sandbox Code Playgroud)

或者,为您的导入添加别名(不是我会做的..而是一个选项):

import (
    // others here
    api_package "./api"
)
Run Code Online (Sandbox Code Playgroud)

问题在于,编译器对使用什么感到困惑。该api包..或者api你声明的变量。

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