想象一个导出一些结构和一些函数的包。
如果我想围绕该包创建一个包装器,以便它可以用作插件,我应该重新创建嵌入了旧结构的结构吗?例如:
package foo
type Foo struct {
Field string
}
func DoSomething() {
}
package bar
import foo
type Foo struct {
foo.Foo
}
func DoSomething() {
foo.DoSomething()
}
有更好的方法吗?这是惯用的方式吗?
答案 0 :(得分:1)
我想不是。只需使用原始包,如果您想使用自己的版本,可以使用别名。
我们现在说你的代码是:
import (
foo "abc.com/package/bar" // this is alias
)
func CallFoo() {
foo.DoSomething()
}
您可以使用别名将foo替换为别名导入,其他代码保持不变。
{{1}}
答案 1 :(得分:0)
似乎这是惯用的方式。没有魔力。