单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
要保证线程安全
package main
import (
"fmt"
"sync"
"time"
)
type Singleton struct {
}
var singleton *Singleton
var singletonOnce sync.Once
func Instance() *Singleton {
singletonOnce.Do(func() {
singleton = &Singleton{}
})
return singleton
}
func (s *Singleton) print() {
fmt.Printf("address: %p\n", s)
}
func main() {
Instance().print()
Instance().print()
go Instance().print()
go Instance().print()
time.Sleep(100 * time.Millisecond)
}