杀鸡焉用牛刀 发表于 2025-3-5 03:16:21

golang 设计模式之一 singleton 单例模式

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 />   https://i-blog.csdnimg.cn/blog_migrate/a273a1749599eb7c939a4b864c7cd2c8.gif    本文由 mdnice 多平台发布

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: golang 设计模式之一 singleton 单例模式