35 lines
409 B
Go
35 lines
409 B
Go
package main
|
|
|
|
import (
|
|
"sync"
|
|
"fmt"
|
|
)
|
|
|
|
/*
|
|
* 双重锁检查机制
|
|
*/
|
|
|
|
type example3 struct {
|
|
name string
|
|
}
|
|
|
|
var instance3 *example3
|
|
var once sync.Once
|
|
|
|
func GetInstance3() *example3 {
|
|
|
|
once.Do(func() {
|
|
instance3 = new(example3)
|
|
instance3.name = "第一次赋值单例"
|
|
})
|
|
return instance3
|
|
}
|
|
|
|
func main() {
|
|
e1 := GetInstance3()
|
|
fmt.Println(e1.name)
|
|
|
|
e2 := GetInstance3()
|
|
fmt.Println(e2.name)
|
|
}
|