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 项目中如何跨包引用内部函数?的详细内容,更多请关注其它相关文章!