Skip to content

Instantly share code, notes, and snippets.

@hongruiqi
Last active December 26, 2015 21:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hongruiqi/7216936 to your computer and use it in GitHub Desktop.
Save hongruiqi/7216936 to your computer and use it in GitHub Desktop.
package main
import "sync"
type SingleCounter struct {
count int
}
var counter *SingleCounter
type Manager struct {
counter *SingleCounter
once sync.Once
}
func NewManager() *Manager {
manager := new(Manager)
manager.once.Do(func() {
counter = new(SingleCounter)
})
manager.counter = counter
return manager
}
package main
import "sync"
type SingleCounter struct {
count int
}
var counter *SingleCounter
var counterInit sync.Once
func getCounter() *SingleCounter {
counterInit.Do(func() {
counter = new(SingleCounter)
})
return counter
}
type Manager struct {
counter *SingleCounter
}
func NewManager() *Manager {
return &Manager{counter: getCounter()}
}
package main
import "sync"
type SingleCounter struct {
count int
}
var getCounter = func() func() *SingleCounter {
var counter *SingleCounter
var counterInit sync.Once
return func() *SingleCounter {
counterInit.Do(func() {
counter = new(SingleCounter)
})
return counter
}
}()
type Manager struct {
counter *SingleCounter
}
func NewManager() *Manager {
return &Manager{counter: getCounter()}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment