手癖でGoを書いてて最近やっと気付いたんだけどスタイルが2種類あるんだなと。いやGoに限らないけども。 インタフェースの都合で引数が決まってくるときに残りの引数をどうやって渡すかというのがあって オブジェクトのプロパティとメソッドで役割分担をすると
// controller.go type controller struct { conf Config } func (con *controller) FooHandler(c *gin.Context) { c.JSON(200, gin.H{"foo": con.conf.foo}) } // router.go con := controller{conf} r.GET("/foo", con.FooHandler)
みたいな感じになって、JavaScriptみたいにクロージャを使うと
// controller.go func FooHandler(c *gin.Context, conf Config) { c.JSON(200, gin.H{"foo": conf.foo}) } // router.go r.GET("/foo", func (c *gin.Context) { return FooHandler(c, conf) })
みたいな感じ。