在 golang 中包装一个包
Wrapping a package in golang
想象一个导出一些结构和一些函数的包。
如果我想围绕该包制作一个包装器,以便它可以用作插件,我是否应该重新创建包含嵌入其中的旧结构的结构?示例:
package foo
type Foo struct {
Field string
}
func DoSomething() {
}
package bar
import foo
type Foo struct {
foo.Foo
}
func DoSomething() {
foo.DoSomething()
}
有没有更好的方法?这是惯用的方式吗?
我认为不是。使用原包即可,如果要使用自己的版本可以使用alias。
假设当前您的代码是:
import (
"abc.com/package/foo"
)
func CallFoo() {
foo.DoSomething()
}
可以通过别名import将foo替换成bar,其他代码保持不变
import (
foo "abc.com/package/bar" // this is alias
)
func CallFoo() {
foo.DoSomething()
}
这似乎是惯用的方式。没有魔法。
想象一个导出一些结构和一些函数的包。
如果我想围绕该包制作一个包装器,以便它可以用作插件,我是否应该重新创建包含嵌入其中的旧结构的结构?示例:
package foo
type Foo struct {
Field string
}
func DoSomething() {
}
package bar
import foo
type Foo struct {
foo.Foo
}
func DoSomething() {
foo.DoSomething()
}
有没有更好的方法?这是惯用的方式吗?
我认为不是。使用原包即可,如果要使用自己的版本可以使用alias。
假设当前您的代码是:
import (
"abc.com/package/foo"
)
func CallFoo() {
foo.DoSomething()
}
可以通过别名import将foo替换成bar,其他代码保持不变
import (
foo "abc.com/package/bar" // this is alias
)
func CallFoo() {
foo.DoSomething()
}
这似乎是惯用的方式。没有魔法。