Go 如何导入路由

Go 如何导入路由,go,Go,我刚刚开始了一个围棋项目,按照Pluralsight上的教程进行,但当我想将所有路径分割成一个文件路径时,遇到了一点障碍 以前我的代码运行良好: 梅因,加油 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() r.LoadHTMLGlob("templates/*.html") r.GET("/", func(c

我刚刚开始了一个围棋项目,按照Pluralsight上的教程进行,但当我想将所有路径分割成一个文件路径时,遇到了一点障碍

以前我的代码运行良好:

梅因,加油

package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func main() {
    r := gin.Default()
    r.LoadHTMLGlob("templates/*.html")

    r.GET("/", func(c *gin.Context) {
        c.String(http.StatusOK, "Helo from %v", "Gin")
    })

    r.GET("/json", func(c *gin.Context) {
        c.JSON(200, gin.H {
            "status":  "posted",
            "message": "Hi...",
            "nick":    "Nick here",
        })
    })

    r.GET("/template/index", func(c *gin.Context) {
        c.HTML(http.StatusOK, "index.html", nil)
    })

    r.Run(":3000")
}
在此之前,我所有的代码都运行良好

然后我制作了一个如下的路由文件:

走吧

package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func registerRoutes() *gin.Engine {
    r := gin.Default()
    r.LoadHTMLGlob("templates/*.html")

    r.GET("/", func(c *gin.Context) {
        c.String(http.StatusOK, "Helo from %v", "Gin")
    })

    r.GET("/json", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "status":  "posted",
            "message": "Hi broh",
            "nick":    "Nick here",
        })
    })

    r.GET("/template/index", func(c *gin.Context) {
        c.HTML(http.StatusOK, "index.html", nil)
    })

    return r
}
我将
main.go上的代码更改为:

package main

func main() {
    r := registerRoutes()

    r.Run(":3000")
}
当我运行它时,我得到一个错误:

go build main.go
#命令行参数
.\main.go:4:7:undefined:registerRoutes
我试图理解它,但我总是收到错误信息。我的代码有问题吗

我的项目结构:

你需要两样东西:

  • 使用
    go Run./…
    go Run main.go model.go routes.go运行应用程序
  • 将函数
    registerRoutes
    重命名为
    registerRoutes
    ,以使函数公开并在包中可见
    • 你需要两样东西:

      • 使用
        go Run./…
        go Run main.go model.go routes.go运行应用程序
      • 将函数
        registerRoutes
        重命名为
        registerRoutes
        ,以使函数公开并在包中可见

      您正在此处构建一个Go文件,因此编译器将无法链接所需的routes.Go文件,从而导致上述错误。尝试“$go build”创建二进制文件,然后执行它。或者,您也可以使用“go install”。@KshitijSaraogi好的,我来试试答案@如果您觉得答案有帮助,Bertojoris可以自由投票:)您在这里构建了一个Go文件,因此编译器将无法链接所需的routes.Go文件,从而导致上述错误。尝试“$go build”创建二进制文件,然后执行它。或者,您也可以使用“go install”。@KshitijSaraogi好的,我来试试答案@如果你觉得有帮助,Bertojoris可以自由投票:没有必要导出该函数,它都在同一个包中。它应该是
      go-run。
      ,为
      go-run
      提供多个包参数是没有意义的(这就是“/…”所做的)。不需要导出函数,它都在同一个包中。它应该是
      go-run。
      ,为
      go-run
      (这就是“/…”所做的)提供多个包参数是没有意义的。