在https://golang.org/doc/tutorial/create-module教程中,首先在一个模块内创建一个包,然后(在https://golang.org/doc/tutorial/call-module-code中)从另一个模块中使用该包。
然而,对于大多数用户项目,我们希望鼓励用户在一个单一模块内开发他们自己的所有包——这样依赖管理会简单得多,而且如果用户需要在这些模块内按独立的时间表发布包,那么拥有多个模块才真正是一个优势。
要在同一个模块内找出如何使用一个包的方法并不完全是微不足道的(例如,参见https://stackoverflow.com/q/68616619)。
我认为“创建一个Go模块”的教程应该在(更高级)多模块工作流之前演示在同一模块内使用多个包的方法。
CC @stevetraut@jayconrod@matloob
3条答案
按热度按时间e1xvtsh31#
谢谢,Bryan。
教程中包含两个模块的目的是为了说明如何开发代码,在发布后,它将被其他开发者用作外部资源。这两个模块中的代码并不旨在说明多模块开发——一个模块是“开发中”的,而另一个是一个模拟客户端。所以这是一个展示如何在发布前(通过替换)调用另一个模块中的代码的工作流程的机会。
我认为在模块内部添加一个关于跨包调用的主题是可以的。但是...
...话虽如此,我想说我认为这个教程的构思很差(由我提出)。我认为一个以标题为焦点的教程应该关注模块机制,包括你提到的交互项,还包括版本控制和其他一些常见的模块开发工作流程项目。
相反,教程从模块开始,然后跳过了一个轻量级的Go语言错误处理、切片、循环、单元测试的简要介绍,最后用几个构建/安装命令结束。
我在想我们是否应该重新设计这个教程,可能的结果是有两个教程?
你怎么看?
vfhzx4xs2#
我认为重新设计,可能有两个或甚至三个教程,听起来不错。也许一个教程是关于在一个模块内编写(多包)程序的,另一个是关于为其他人发布(和测试)库以供使用的?
kqqjbcuj3#
是的。这些想法对我有用。我会看看我能想出什么并提出建议。