我收到以下导入代码的错误:
代码:包装主
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文件夹下的文件,导入不起作用是有原因的吗?
我正在使用以下内容在main.go 中使用api
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)
}
编译器查找包的实际使用。。而不是它存在的事实。
你需要用那个包里的东西。。或删除导入。例如:
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
导入包,而不是相对导入。
首先,不要使用相对导入。
如果您的GOPATH
包含/Users/aaaa/IdeaProjects/app/src
,则将您的包导入为api
。
接下来,您将使用对api :=
的赋值来跟踪api。请使用其他名称。
如果.go文件发生错误,导致编译器无法到达使用该文件的位置,则可能发生此错误。