Skip to content

golang 单例模式

Published: at 08:50 AM | 1 min read

单例模式(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)
}