好的.. 我有,或者正在写一个 web 框架包,叫做 mao。我想在控制器中定义我的路由。在毛type ( Controller struct { Route Route } Route struct { Name, Host, Path, Method string })在 mao 导入包中控制器/default.gotype DefaultController struct { mao.Controller}func (this *DefaultController) Index() Response { this.Route = mao.Route{"default_index","localhost","/", "GET"}}现在,由于我想在控制器内定义我的路由,路由器在实例化时应该读取所有控制器。那就是问题所在。如何将包名称传递给我的路由器,以便它能够获取该包中的所有结构和函数?甚至有可能吗?
3 回答
Qyouu
TA贡献1786条经验 获得超11个赞
老实说,我认为你这样做是错误的。“自动注册”混淆了发生的事情,并且会导致代码难以测试和推理。
我建议让控制器成为具体控制器应该满足的接口,并Add(c Controller)
在路由器上有一个方法来在调用主项目(导入路由器和控制器)中分配控制器。这应该使您的代码易于理解和明确,并且更符合 go 的精神。
该database/sql
驱动程序注册更多的是黑客的,不应该被认为是最佳做法。
- 3 回答
- 0 关注
- 190 浏览
添加回答
举报
0/150
提交
取消