首页 > 后端开发 > Golang > 如何跨多个目录组织 Go 包而不出现导入错误?

如何跨多个目录组织 Go 包而不出现导入错误?

Barbara Streisand
发布: 2024-12-31 17:11:18
原创
874 人浏览过

How Can I Organize a Go Package Across Multiple Directories Without Import Errors?

Go 包的多个源目录

在 Go 中,开发具有多个源目录的包可能具有挑战性,尤其是当您想要组织时您的代码结构,同时保持用户易于导入。

虽然在跨多个源文件中声明相同的包名称似乎很自然不同的目录,不推荐这种方式。根据 Go 语言规范,实现可能要求包的所有源文件都位于同一目录中。尝试从同一个包导入多个目录将导致错误:

error: redefinition of ‘mypackage’
登录后复制

Go 提供了几种替代方案,而不是声明多个源目录:

  1. 重命名文件名:构建文件名以模仿文件夹层次结构。而不是:

    foo/foo1.go
    foo/bar/bar1.go
    foo/bar/bar2.go
    登录后复制

    使用:

    foo/foo1.go
    foo/bar-bar1.go
    foo/bar-bar2.go
    登录后复制
  2. 考虑包拆分:如果您的包变得太大,请考虑将其分解为多个较小的包包。这可以降低依赖关系的复杂性和可维护性。
  3. 内部包:Go 1.5 中引入的内部包允许您将相关文件分组到子目录中,而无需在包外部访问它们。这可以帮助组织你的代码库并控制可见性。

总而言之,不建议跨多个源目录开发 Go 包。推荐的方法包括重命名文件名、拆分包或利用内部包。这些替代方案使您能够有效地组织代码,同时确保正确的包导入和可见性。

以上是如何跨多个目录组织 Go 包而不出现导入错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板