Gin 项目中如何跨包引用内部函数?

gin 项目中如何跨包引用内部函数?

跨包引用内部函数,告别大写依赖

在一项 gin 项目中,我们面临着如下目录结构:

gin_demo
├── app
│   └── blog
│       ├── handler.go
│       └── router.go
├── go.mod
├── go.sum
├── main.go
└── routers
    └── routers.go

目标是让位于 app/blog/router.go 的 routers 函数使用 app/blog/handler.go 中的 ahandler 和 bhandler 函数。常规做法是修改 handler.go,将这两个函数提升为大写,以便其作为导出函数。

然而,我们提供了一种更简便的方法,无需依赖大写输出:

// app/blog/router.go

package blog

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

func Routers(e *gin.Engine) {
    e.GET("/a", aHandler)
    e.GET("/b", bHandler)
}

秘诀在于,由于 router.go 和 handler.go 位于同一个包中,因此无需显式导入后者。包内部的所有函数和变量,无论字母大小写,都可供彼此使用。

因此,routers 函数可以无缝访问 ahandler 和 bhandler 函数,而无需进行任何大写导出。这种方法简化了依赖关系管理,同时保持了代码的可读性和可维护性。

以上就是Gin 项目中如何跨包引用内部函数?的详细内容,更多请关注其它相关文章!