在golang

时间:2017-01-03 08:39:05

标签: go packages

想象一个导出一些结构和一些函数的包。

如果我想围绕该包创建一个包装器,以便它可以用作插件,我应该重新创建嵌入了旧结构的结构吗?例如:

package foo

type Foo struct {
    Field string
}

func DoSomething() {

}
package bar

import foo

type Foo struct {
    foo.Foo
}

func DoSomething() {
    foo.DoSomething()
}

有更好的方法吗?这是惯用的方式吗?

2 个答案:

答案 0 :(得分:1)

我想不是。只需使用原始包,如果您想使用自己的版本,可以使用别名。

我们现在说你的代码是:

import (
    foo "abc.com/package/bar" // this is alias
)

func CallFoo() {
    foo.DoSomething()
}

您可以使用别名将foo替换为别名导入,其他代码保持不变。

{{1}}

答案 1 :(得分:0)

似乎这是惯用的方式。没有魔力。