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)
|
||
|
}
|