1 回答

TA贡献1876条经验 获得超5个赞
对标识符的访问权限不是细粒度的,您可以指定您授予访问权限的人。而且没有必要。这会使使用(源代码)和实现(编译时间、编译包对象和可执行二进制文件大小)变得不必要地复杂化。
如果您只想授予对特定包的访问权限,最简单的方法是合并包并使标识符不被导出。
如果你想授予对多个包的访问权限或者包会变得非常大,你可以使用internal packages。引入了内部包,因此您可以将“大”包分解为多个较小的包,并且仍然隐藏实现细节并保护其免受“外部”(来自其他包)的影响。
内部包可以定义导出标识符,但只允许“内部组”访问它们。
例如:
├── app
│ ├── app.go
│ ├── handler
│ │ ├── internal
│ │ │ ├── queries
│ │ │ │ └── queries.go
│ │ │ └── foo
│ │ │ └── foo.go
│ │ ├── users.go
│ │ ├── common.go
│ │ └── users.go
│ └── model
│ └── model.go
├── config
│ └── config.go
└── main.go
在此示例中,queries包可由handler包和foo包访问,但不可由包model或config包访问。
通常,内部包(internal位于其路径中有文件夹的文件夹内的包)只能从以该文件夹的父internal文件夹为根的包中导入。
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报