singleton
单例模式是最简朴的设计模式之一,也是业务中最常用的设计模式之一。在golang中实现单例模式不要太简朴,使用sync.once就轻松搞定。
通过sync.once可以实现dbTest结构体只被初始化一次。
- type DBTest struct {<br /> host string<br /> user string<br />}<br /><br />var (<br /> dbTest *DBTest<br /> once sync.Once<br />)<br /><br />func NewDBTest(host string, user string) *DBTest {<br /> once.Do(func() {<br /> fmt.Println("once")<br /> dbTest = &DBTest{host: host, user: user}<br /> })<br /> fmt.Println("return")<br /> return dbTest<br />}<br /><br />func main() {<br /> NewDBTest("test", "user")<br /> NewDBTest("test", "user")<br /> NewDBTest("test", "user")<br />}<br />
复制代码 输出:
- once<br />return<br />return<br />return<br />
复制代码 本文由 mdnice 多平台发布
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |