Go internal 和 pkg 包共享同名

我是新手,我一直在努力了解有关文件结构和包的最佳实践。

根据我的阅读,该internal文件夹包含客户端无法使用的pkg代码,并且该文件夹包含可以在外部使用的代码。假设我有一个资源,它有一些内部实现,也有一些可以在外部使用的功能。我会像这样在两个文件夹下放同名的包吗?

- my-app
  - pkg
   - accounts
     - accounts.go (package accounts)
  - internal
   - accounts
     - accounts.go (package accounts)

然后当我导入时指定"app/my-app/internal/accounts""app/my-app/pkg/accounts"取决于我要导入的模块?如何处理同名的内部和外部包?


侃侃无极
浏览 199回答 1
1回答

慕村225694

Go 命令文档和本设计文档中描述了内部包。外部可导入的包可以在文件夹以外的任何文件internal夹中。没有要求也没有广泛同意这些包应该放在一个pkg文件夹中。应用程序可以通过在导入规范中指定包名来解决同名包之间的冲突:import (     iaccounts "my-app/internal/accounts"     accounts "my-app/accounts"     )用于iaccounts指代内部包和accounts指代常规包。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go