go的单例模式

保证一个 struct 只有一个实例,并提供一个全局访问点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package manager

import (
"sync"
"fmt"
)

var m *Manager
var once sync.Once

type Manager struct{}

func () *Manager {
once.Do(func() {
m = &Manager{}
})
return m
}

func (p *Manager) Manage() {
fmt.Println("manage...")
}