为了账号安全,请及时绑定邮箱和手机立即绑定

无法导入自定义 go 模块

无法导入自定义 go 模块

Go
森栏 2021-12-27 18:06:00
这是我的主文件(server.go):package mainimport (    "net/http"    "routes")func main() {    http.HandleFunc("/", routes.Handler)    http.ListenAndServe(":8000", nil)}我的路由模块在同一目录中:package routesfunc Handler(w http.ResponseWriter, r *http.Request) {    // stuff...}当我运行时,go run server.go我收到此错误:server.go:6:5: cannot find package "routes" in any of:    /usr/local/Cellar/go/1.6/libexec/src/routes (from $GOROOT)    ~/server/src/routes (from $GOPATH)当我将代码routes.go放入我的server.go文件时,它运行良好。我无法导入模块。我试过将$GOPATH变量设置为我的当前目录,我试过重新排列我的项目目录以模仿这里的目录。我的选择不多了。奇怪的是,一种被如此广泛采用的语言,关于如何做几乎所有其他语言都相对容易的事情的文档如此糟糕。请帮我弄清楚我做错了什么。更新:这是输出 go envGOARCH="amd64"GOBIN=""GOEXE=""GOHOSTARCH="amd64"GOHOSTOS="darwin"GOOS="darwin"GOPATH="/Users/me/server"GORACE=""GOROOT="/usr/local/Cellar/go/1.6/libexec"GOTOOLDIR="/usr/local/Cellar/go/1.6/libexec/pkg/tool/darwin_amd64"GO15VENDOREXPERIMENT="1"CC="clang"GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"CXX="clang++"CGO_ENABLED="1"
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

如何编写 Go 代码”文章是入门页面上的推荐起点,它解释了这一点。(感谢@elithrar)

彼得Bourgon有一个很好的写了关于结构良好的围棋应用。

您应该将routes包放在一个routes文件夹中,或者如果您的主包在路由文件夹中,您可以lib在该文件夹中创建一个包含实际routes包的文件夹。

文件夹结构的原因是由于 goimport语句的工作方式。考虑到导入的工作方式,在同一文件夹中启用多个包是不明确的。


查看完整回答
反对 回复 2021-12-27
?
largeQ

TA贡献2039条经验 获得超7个赞

将路由包移动到/Users/me/server/src/routes,你应该很高兴。


查看完整回答
反对 回复 2021-12-27
  • 2 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信