用 golang 包裹包裹

  • 本文关键字:包裹 golang go package
  • 更新时间 :
  • 英文 :


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

如果我想围绕该包制作一个包装器,以便它可以用作插入式,我是否应该使用嵌入其中的旧结构重新创建结构?例:

package foo
type Foo struct {
    Field string
}
func DoSomething() {
}

package bar
import foo
type Foo struct {
    foo.Foo
}
func DoSomething() {
    foo.DoSomething()
}

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

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

假设目前您的代码是:

import (
    "abc.com/package/foo"
)
func CallFoo() {
    foo.DoSomething()
}

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

import (
    foo "abc.com/package/bar" // this is alias
)
func CallFoo() {
    foo.DoSomething()
}

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

func DoSomething() {
    foo.DoSomething()
}

最新更新