初始化包的init函数中的变量是否确保golang应用程序中的单个实例?

Jac*_*ine 2 go

我正在写一个Bloom Filter包.在我的包中,我想创建一个X(非导出的)实例,我希望它只作为单个实例存在; 无论我的包被导入应用程序多少次.

我正在做的一个简单的片段是:

package superduperbloomfilter

var x X

func init() {
    x = X.New(....)
}
Run Code Online (Sandbox Code Playgroud)

它是否正确 ?

cni*_*tar 7

我希望只作为单个实例存在; 无论我的包被导入应用程序多少次

规范说导入的包只初始化一次:

如果包具有导入,则在初始化包本身之前初始化导入的包.如果多个包导入包P,则P将仅初始化一次.