go - 在 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()
}

可以通过别名import的方式将foo替换为bar,其他代码保持不变。

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

func CallFoo() {
    foo.DoSomething()
}

关于go - 在 golang 中包装一个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41439435/

相关文章:

go - 格式错误的模块路径 "xxxx/xxxx/uuid"从基于 GOPATH 的 dep 迁移到 go mod 时第一个路径元素中缺少点

Oracle打包多个 session 的全局变量

java - 为 Mac bundle 一个 Java 7 .jar

python - 如何处理专有 Python 包名称与公共(public)包名称冲突?

java - 如何在Java中的字符串中指示包的路径?

go - 如何将成功或失败结果返回到goroutine到main函数和fmt.Println成功次数

go - 在 GO 中使用 map 作为 map 键的替代方法

Go模块和依赖修改 vendor

python - 使用已编译的动态共享库分发 Python 包

go - 如何通过 HTTPS 在 Golang 中进行 SOAP 调用