因此,使用sync.Once包是安全地实现此目标的首选方式,类似于Objective-C和Swift(Cocoa)实现dispatch_once方法来执行类似的初始化。

结论

当涉及到并发和并行代码时,需要对代码进行更仔细的检查。始终让你的团队成员执行代码审查,因为这样的事情很容易就会被发现。

所有刚转到Go语言的新开发人员都必须真正了解并发安全性如何工作以更好地改进其代码。即使Go语言本身通过允许你在对并发性知识知之甚少的情况下设计并发代码,也完成了许多繁重的工作。在某些情况下,单纯的依靠语言特性也无能为力,你仍然需要在开发代码时应用最佳实践。

翻译自http://marcio.io/2015/07/singleton-pattern-in-go/,考虑到可读性部分内容有修改。