我遇到以下导入代码错误:
代码:包主
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)
编译器会寻找包的实际使用 ..而不是它存在的事实。
您需要使用该软件包中的某些内容。或删除导入。例如:
v := api.Something ...
Run Code Online (Sandbox Code Playgroud)
如果您在源文件中不使用该包中的任何内容,则无需导入。也就是说,除非您希望init
函数运行。在这种情况下,您可以使用忽略符号import _
。
编辑:
更新之后,您似乎在这里覆盖了包导入:
api := ApiResource{map[string]OxiResp{}}
Run Code Online (Sandbox Code Playgroud)
声明了一个名为的变量api
。现在,编译器认为它是一个变量,因此您实际上并没有使用该api
包api
。
您有几种选择。
首先,您可以将该变量称为其他变量(可能是我会做的事情):
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
而不是相对地导入软件包。