作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
假设我有一项服务可通过 API 与 Github 通信以创建和修改存储库。
函数列表可能如下所示。
对 API 发出的每个请求都有几个移动部分,因此我将其拆分为多个函数
// github_service.go
package main
// :show (GET) functions
func findGithubRepository(...)
func findGithubRepositoryRequestBuilder(...)
func findGithubRepositoryUrl(...)
// :create (POST) functions
func createGithubRepository(...)
func createGithubRepositoryPayload(...)
func createGithubRepositoryRequestBuilder(...)
func createGithubRepositoryUrl(...)
// :update (PUT) functions
func updateGithubRepository(...)
func updateGithubRepositoryPayload(...)
func updateGithubRepositoryRequestBuilder(...)
func updateGithubRepositoryUrl(...)
// Helpers used by above functions
func queryGithub(...)
func GithubHostName(...)
这个布局有两个问题——
所有内容都在一个名为 github_service.go
的大文件中,我不确定如何拆分它。 它应该放在较小的子目录中,例如 services/github/update_service.go
吗?一般来说,如何在一个简单的项目(例如命令行实用程序)中组织这样的服务)
因为所有这些都在同一个 Go 包中,所以名称必须是唯一的。因此,我将所有函数与操作和上下文命名空间(例如,findGithubRepositoryUrl()
而不是 url()
)。 每个都应该放在一个单独的包中吗?。但他们将如何共享共同的助手?
谢谢!
最佳答案
对此有多种解决方案。
type GithubRepository struct {}
func (g GithubRepository) find() {}
func (g GithubRepository) create() {}
type GithubRepositoryPayload struct {}
func (g GithubRepositoryPayload) find() {}
func (g GithubRepositoryPayload) create() {}
...
这也可能为处理程序提供一种访问通用功能或变量的方法。您可以使用这些创建基本结构并将其嵌入到所有处理程序结构中。
关于go - 如何在 Go 项目目录结构中组织和分解服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57702463/
我是一名优秀的程序员,十分优秀!