首页 > 后端开发 > Golang > 正文

Go的内部包能真正封装实现细节吗?

Susan Sarandon
发布: 2024-11-27 05:45:14
原创
435 人浏览过

Can Go's Internal Packages Truly Encapsulate Implementation Details?

Go 中的内部包

Go 严格的包可见性规则旨在保持 API 表面定义明确且独特。然而,当项目增长时,不可能将实现细节封装在较小的包中而不将其暴露给外部消费者。

Go 1.4 中提出了解决这一困境的一个解决方案:引入“内部”包。

导入内部包

“内部”包只能由同一树中的其他包导入。此规则旨在在公共包和内部包之间创建明确的分离,防止内部实现细节的意外暴露。

示例

尝试从其父树外部导入内部包会导致错误:

import (
    "runtime/internal/atomic"
    "runtime/internal/sys"
)
登录后复制
错误:
导入运行时/内部/原子:不使用内部包允许

你可以访问内部函数吗?

在主包中使用内部函数的问题源于保持实现细节隔离的愿望。不幸的是,这不是内部包的预期用例。

要点

将实现细节封装在内部包中在 Go 中是不切实际的。相反,请考虑将代码库重构为具有明确定义的公共接口的不同模块。这种方法与 Go 强调清晰的 API 边界相一致,并提高了代码的可维护性和可扩展性。

以上是Go的内部包能真正封装实现细节吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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