同一程序内的Golang包的多个实例

时间:2019-06-22 06:11:57

标签: go package instantiation

我目前正在研究Golang,并且遇到了与程序包实例化有关的问题。

问题:我们是否可以在同一个程序包中使用不同的实例。

问题处理:在构建go软件包时,在整个特定的构建过程中,仅实例化或编译一次实用软件包(非main)。但是,出于某些目的,在进行日志记录时,我希望让不同的记录器并行处理不同的程序包或文件。有没有办法,我可以在同一个程序包中拥有多个实例,以使对每个程序包所做的更改都不会影响彼此。

注意:在go-logging库中,我已经找到了很好的解决方法,在该库中我声明了多个记录器,这很满足我的需求。因此,我的主要问题是我们是否可以在同一个程序包中使用不同的实例。

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

您可以使用Go模块和别名将两个软件包导入同一源文件中。当quote是带标签的仓库或子模块时,这将起作用。

import (
    "rsc.io/quote"
    quoteV3 "rsc.io/quote/v3"
)

func Hello() string {
    return quote.Hello()
}

func Proverb() string {
    return quoteV3.Concurrency()
}