具有许多文件的 golang 包的内部组织

Han*_*ans 4 package go

我有一个想要分发的 Go 库。它有 62 个源文件,但我想将 API 保存在一个包中。有没有办法可以在单个包中使用多个目录来存储代码?这不是大量的源代码,因为源文件本身很小,如果可能的话,我想保持这种状态以使其可导航。

由于它模仿了其他语言的类似库,因此它目前有两个包:/project 和 /project/models。在了解了有关 Go 打包的更多信息后,我现在意识到这对于分发和使用来说很笨拙。用户更喜欢单个包。

有没有一种“gopheric”的方式来做到这一点?

fab*_*ioM 5

阅读这两篇文章可以很好地理解最佳实践:

  1. 投入生产
  2. 组织 Go 代码

每个路径目录都可以是您应用中的一个单独的模块/包:

github.com/myaccount/myapp/
    README.md
    Makefile
    applib/
        cmd/
            main.go
            main_test.go
            handlers.go
            handlers_test.go
        lib1/
            main.go
            main_test.go
            process.go
            process_test.go
        lib2/
            foo.go
            foo_test.go
            bar.go
            bar_test.go
Run Code Online (Sandbox Code Playgroud)


Vol*_*ker 3

不,这非常简单:一个目录==一个包。但是,在子目录中拥有某种带有“辅助”包的“主”包并不是真正“难以分发”,因为go get可以很好地处理这个问题。