这里有两个高层次的部分:找出哪些代码出现在哪个包中,调整API以减less包需要处理的依赖性。

在devise避免需要某些导入的API时:

routes.Registermainmaininterface[]Page[]string[]intsql.RowsUser

将代码组织成包:

net/httputilstoolsutilspackage pagepackage html
router.Register()muxroutesdatabaseconstants

通常,尝试在图层中构build您的应用程序。 您的高层次,特定于用例的应用程序代码应该导入更低层的,更基本的工具,而不是反过来。 这里有更多的想法:

net/httpnetnet/urlRegisterappAappBappBvar Routesmyapp/routesrouterrouter.RegisterinterfacefunchttpHandlerCookieJarFiletext/templatehtml/templateFuncMaphttphttp.ServerServerhttp.ListenAndServe(...)Serverpackage "myapp/conf"var Conf map[string]interface{}myapp/conf

一些更具体的方法来移动代码或更改定义以减less依赖性问题:

utilsstrutildbutildbutilgoimportsinterfaceUserGroupu.Groups()[]group.Groupg.Users()g.Users()[]user.User[]uintsql.RowsinterfaceimportUserGroup

感谢详细的问题和后续。