2 回答

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
通常在 Go 中,您不會(huì)創(chuàng)建一個(gè)結(jié)構(gòu)來(lái)包裝一堆這樣的函數(shù)聲明;您只需直接導(dǎo)出功能即可。
package controllers
import "github.com/gin-gonic/gin"
func FindAll(ctx *gin.Context) { ... }
router.GET("/", controllers.FindAll)
如果你真的想要一個(gè)包含它們作為變量函數(shù)引用的結(jié)構(gòu),可以使用不重復(fù)類型的語(yǔ)法:
type UserCtrlType struct {
FindAll, FindOneByID, FindOneByUsername gin.HandlerFunc
}
一般來(lái)說(shuō),在 Go 中你可能會(huì)發(fā)現(xiàn)這是你重復(fù)代碼中最少的(if err != nil { return err }出現(xiàn)很多)?!按蜃帧痹?Go 中并不是一個(gè)特殊的概念;reflect如果一個(gè)對(duì)象不是一個(gè)對(duì)象(不通過(guò)包,這應(yīng)該是一種特殊情況),則永遠(yuǎn)不能將其稱為地圖。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
我找到了我的問(wèn)題的答案。我認(rèn)為由于我對(duì) Golang 的了解有限,我之前沒(méi)有想到更簡(jiǎn)單的方法來(lái)解決我的問(wèn)題。
這是我對(duì)我的問(wèn)題的回答:
package controllers
import "github.com/gin-gonic/gin"
// UserCtrl : Controller for User
type UserCtrl struct{}
// FindAll :
func (ctrl UserCtrl) FindAll(ctx *gin.Context) {
}
// FindOneByID :
func (ctrl UserCtrl) FindOneByID(ctx *gin.Context) {
}
// FindOneByUsername :
func (ctrl UserCtrl) FindOneByUsername(ctx *gin.Context) {
}
并在包裝中api
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)
}
- 2 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報(bào)