我在学围棋,遇到了一个问题。
我用go mod init main
创建了mod文件
接下来,我创建了控制器和路由文件夹,看起来像下面这样:
├── contollers
│ └── users.controller.go
├── routes
│ ├── index.go
│ └── users.routes.go
├── vendor
│ └── modules.txt
├── go.mod
├── go.sum
└── main.go
在mod文件中,模块看起来像这样的module main
现在当我试图将控制器导入路由器时,它会给我导入错误。
我一直在做下面的事情。尝试-1
import (
"$GOPATH/controllers"
"github.com/gin-gonic/gin"
)
它给出了invalid import path: "$GOPATH/controllers"syntax
错误
尝试-2
import (
"$GOPATH/main/controllers"
"github.com/gin-gonic/gin"
)
错误也是一样的
尝试-3
import (
"main/controllers"
"github.com/gin-gonic/gin"
)
controller.go
package controllers;
import (
"fmt"
"github.com/gin-gonic/gin"
)
func HealthCheck() gin.HandlerFunc {
return func (c *gin.Context) {
fmt.Println("reached controller")
}
}
router.go
package routes
import (
"bootcamp.com/server/controllers"
"github.com/gin-gonic/gin"
)
func UserRouters(inComingRoutes *gin.Engine) {
inComingRoutes.GET("/api/health", controllers.HealthCheck());
}
它会抛出这样的错误,could not import main/controllers (no required module provides package "main/controllers")
我一直坚持与此3-4个小时,任何人都可以请建议我如何可以导入该控制器到我的路线。
先谢谢你了。
2条答案
按热度按时间yvfmudvl1#
1.通过编辑
go.mod
修改模块路径:1.修改导入路径:
controller.go
(删除尾部;
):1.将目录
contollers
重命名为controllers
以匹配软件包名称(缺少r
)。1.删除
vendor
文件夹。说明:
main
在go中有特殊的含义。引用golang规范:一个完整的程序是通过将一个名为 main package 的未导入的包与它导入的所有包进行传递链接而创建的。main package必须具有包名main并声明一个不带参数且不返回值的函数main。
1.不带点的导入路径保留给标准库和go工具链。参见cmd/go: document that module names without dots are reserved。
hpxqektj2#
使用此命令
修改你的用户,路线,开始