# singleton 单例模式是最简单的设计模式之一,也是业务中最常用的设计模式之一。

在golang中实现单例模式不要太简单,使用`sync.once`就轻松搞定。 通过`sync.once`可以实现dbTest结构体只被初始化一次。```gotype DBTest struct { host string user string}var ( dbTest *DBTest once sync.Once)func NewDBTest(host string, user string) *DBTest { once.Do(func() { fmt.Println("once") dbTest = &DBTest{host: host, user: user} }) fmt.Println("return") return dbTest}func main() { NewDBTest("test", "user") NewDBTest("test", "user") NewDBTest("test", "user")}```输出:```gooncereturnreturnreturn``` 本文由[mdnice](https://mdnice.com/?platform=6)多平台发布