gpt4 book ai didi

go - golang 是否没有文件结构?

转载 作者:IT王子 更新时间:2023-10-29 02:32:21 27 4
gpt4 key购买 nike

我一直在研究 golang 以构建网络应用程序,我喜欢这种语言和一切,但我无法理解 golang 中的结构概念。这似乎迫使我没有文件结构、没有文件夹、没有划分、没有关注点分离。有没有办法以我看不到的方式组织 .go 文件?到目前为止,文件结构一直是一个令人头疼的问题,这是我使用该语言唯一的糟糕经历。谢谢!

最佳答案

你说对了一部分。 Go 不强制执行任何关于文件和包结构的内容,除了它禁止循环依赖。恕我直言,这是一件好事,因为你可以自由选择最适合你的东西。

但是,这会给您带来决定什么是最好的负担。我尝试了几种方法,并且根据我正在做的事情(例如库、命令行工具、服务),我相信不同的方法是最好的。

如果您只创建命令行工具,请让根包(您存储库的根)成为main。如果它是小工具,这就是您所需要的。您的命令行工具可能会增长,因此您可能希望将一些东西分开,但不一定要在同一个存储库中。

如果您正在创建库,请执行相同的操作,除了包名称将是您的库的名称,而不是 main

如果您需要组合(作为库和命令行工具都有用的东西),我会把库代码(库的所有公共(public)内容)放在 VCS 根目录中,包括潜在的子包和 cmd/toolname 用于您的二进制文件。

当涉及到网络服务时,我发现遵循 these 是最实用的准则。最好阅读整篇博文,但简而言之 - 在 VCS 根目录中定义域,创建 cmd/app(或多个)作为命令行入口点,并为每个依赖项创建一个包(例如 memcache,数据库、http 等)。您的子包从不明确地相互依赖,它们只共享来自根目录的域定义。这需要一些时间来适应,我仍在根据我的用例调整它,但到目前为止它看起来很有希望。

关于go - golang 是否没有文件结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45524553/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com