dongxiezhi0590 2018-06-21 19:44
浏览 98
已采纳

从另一个文件调用函数失败

I have a file routes.go

package main

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

func initializeRoutes() {
    router.GET("/", func(c *gin.Context) {
        c.HTML(
            http.StatusOK,
            "index.html",
            gin.H{
                "title": "Home Page",
            },
        )
    })
}

and main.go

package main

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

var router *gin.Engine

func main() {
    router := gin.Default()
    router.LoadHTMLGlob("templates/*")
    initializeRoutes()
    router.Run()
}

I have tried running them with the *.go and go run main.go routes.go, I still for some reason get a runtime error. what am I doing wrong here?

Here is the full error:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x914518]

goroutine 1 [running]:
main.initializeRoutes()
        C:/Users/tomuk/go/src/webapp/routes.go:10 +0x58
main.main()
        C:/Users/tomuk/go/src/webapp/main.go:16 +0x51
  • 写回答

1条回答 默认 最新

  • doujiena0025 2018-06-21 20:20
    关注

    It has nothing to do with calling a function from another file. The problem is this line:

    router := gin.Default()
    

    This creates a new local variable called router, and intializes it, leaving the global router variable still uninitialized (nil). So when initializeRoutes tries to call the global routes variable, it panics because it's trying to dereference a nil variable (as the error states).

    Change the line in main to:

    router = gin.Default()
    

    To initialize the global variable instead of creating a new variable, and that should resolve the issue.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于#flink#的问题:关于docker部署flink集成hadoop的yarn,请教个问题flink启动yarn-session.sh连不上hadoop
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题