登录
首页 >  Golang >  Go问答

文件目录结构

来源:stackoverflow

时间:2024-02-22 17:24:25 407浏览 收藏

golang学习网今天将给大家带来《文件目录结构》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我是 go 新手,文件夹结构以及源文件如何相互查看对我来说不太清楚。以下是示例文件夹结构:

module 10x.dev/app

go 1.14
.
├── app
│   ├── controller
│   ├── model
│   └── view
│       └── cli.go
├── go.mod
└── tests
    ├── controller
    ├── model
    └── view
        └── test_cli.go

8 directories, 3 files
  • 如何才能使这种确切的源代码文件夹结构发挥作用?
  • cli.go 作为主源文件和应用程序入口点,go build 会是什么样子?
  • cli.go 如何查看 controller 中的代码?
  • 软件包如何影响这一切?
  • tests 中的代码如何看到 app 中的代码,以便 go test 正常工作?

如果我让它工作,我(很可能很多“我们”)就会处理这个问题并爬上标准的 go 文件夹结构。


解决方案


对于这样的帖子,你真的一次问了太多问题。这些问题中的大多数已经通过 go 简介类型的文档得到了数千次答案。

但是您的问题个别地相当简单,所以让我一次一点地尝试一下:

  • 如何才能使这种确切的源代码文件夹结构发挥作用?

很差劲。非常糟糕。

第一个问题是你的测试结构。 go 工具在名为 *_test.go 的文件中查找测试。可以将测试放在另一个包中,但如果您希望它们使用标准工具,它们仍然需要被称为 *_test.go (即不是 test_cli.go)。

如果您的测试不在同一个包中,您也将无法访问任何未导出的包范围符号。

所以,您可以完成这方面的目标,但这会非常痛苦,而且没有任何原因。

至于你的程序的入口点是app/view/cli.go,这也是非常非常规的。 (无论是 go 术语还是 mvc 术语)。您的入口点必须位于名为 main 的包中。没有硬性规则阻止您将 main 放入 app/view 中,但这非常不寻常。更有意义的是将您的 main 包放在项目的根目录中,或者放在 cmd/server (或类似的)中,并让该包访问您的 m、v 和 c 组件。

  • 以 cli.go 作为主要源文件和应用程序入口点,go build 会是什么样子?

如果你坚持这样做,它会看起来像:

go build ./app/view

如果您遵循我的建议,您将获得:

go build .

go build ./cmd/server
  • cli.go 将如何查看控制器中的代码?

通过 import statement,与它“查看”任何其他包的方式相同。

  • 软件包如何影响这一切?

在 go 中,每个目录都是一个包。

  • 测试中的代码如何看到应用中的代码,以便 go test 正常工作?

如上所述,使用您的“精确”结构,它不会。

学习使用 go 工具。不要与他们战斗。你会更快乐。

查看 standard project layout,了解一种与 go 工具和生态系统配合良好的 go 布局方法。如果需要,您可以随时调整 mvc(也许在 pkg 下或 pkg 旁边创建一个 pkg 文件夹)。

好了,本文到此结束,带大家了解了《文件目录结构》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>