我在golang src中看到了很多这样的代码:
func Open(path string) (*Plugin, error) {
return open(path)
}
func open() {
// etc
}
一个私有函数被公众调用。为什么不只是:
func Open(path string) (*Plugin, error) {
// code of open here
}
ref:https://golang.org/src/plugin/plugin.go?s=1065:1104#L21
我确实知道有时候这很有意义,特别是如果使用open
的功能更多。但是事实并非如此。
这是Golang的某种组织方式吗?
答案 0 :(得分:5)
在这种情况下,这似乎是因为实际实现取决于操作系统。
插件实现plugin_dlopen.go
仅用于OSX和Linux,替代方案plugin_stubs.go
用于其他所有功能(仅包含伪函数,因为尚无其他系统实现。)>
这允许您使用build tags将与操作系统相关的代码保存在一个文件中,同时将通用代码,公共API和公共API的文档保存在一个位置。