我用下面的导入代码得到了下面的错误:
代码: package main
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"如果我在api文件夹下存放了package 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)
}发布于 2014-09-19 09:06:24
编译器查找包的实际使用情况。而不是它存在的事实。
你需要用那个包里的东西..或者删除导入。例如:
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导入包,而不是相对导入。
发布于 2014-09-19 09:50:03
首先,不要使用相对导入。
如果您的GOPATH包含/Users/aaaa/IdeaProjects/app/src,则将您的包作为api导入。
接下来,您将使用对api :=的赋值来跟踪api。使用不同的名称。
发布于 2021-09-10 16:38:34
如果您的.go文件包含阻止编译器到达使用它的位置的错误,则会发生此错误。
https://stackoverflow.com/questions/25924749
复制相似问题