我有一个关于在 Golang 中输入一个包中的模块的问题。
例如,我想UserCtrl在 package 中导出controllers,并且 package可以在 import package 时api使用。UserCtrlcontrollers
我还想UserCtrl通过键入导出,这意味着api我可以调用命名方法,例如UserCtrl.findOne(),或者UserCtrl.findAll()不使用map[string]interface{}。
所以我UserCtrlType在 Golang 中创建了新类型作为结构
package controllers
import (
"github.com/gin-gonic/gin"
)
// UserCtrlType : Type controller for User
type UserCtrlType struct {
FindAll gin.HandlerFunc
FindOneByID gin.HandlerFunc
FindOneByUsername gin.HandlerFunc
}
// UserCtrl : Controller for User
var UserCtrl = UserCtrlType{
findAll,
findOneByID,
findOneByUsername,
}
func findAll(ctx *gin.Context) {
}
func findOneByID(ctx *gin.Context) {
}
func findOneByUsername(ctx *gin.Context) {
}
在 package 中api,我导入controller并使用:
package api
import (
Controllers "github.com/huynhsamha/gin-go-app/controllers"
"github.com/gin-gonic/gin"
)
var userCtrl = Controllers.UserCtrl
func setUpUserRoutes(router *gin.RouterGroup) {
router.GET("/", userCtrl.FindAll)
router.GET("/n/:username", userCtrl.FindOneByUsername)
router.GET("/d/:id", userCtrl.FindOneByID)
}
我正在使用Gin,因此 structUserCtrlType使用 type 重复了很多次gin.HandlerFunc。
有没有其他方法可以解决我的问题,可以导出UserCtrl(键入)并减少重复的类型gin.HandlerFunc声明。
当我在 Node.JS 上工作时,我发现导出模块非常简单。我们可以在 Golang 中简化这个问题吗?
白板的微信
江户川乱折腾
相关分类