36 lines
614 B
Go
36 lines
614 B
Go
|
package main
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
/*
|
||
|
* 单例模式之懒汉模式
|
||
|
* 非线程安全
|
||
|
*/
|
||
|
|
||
|
// 首先构造一个结构体
|
||
|
type example struct {
|
||
|
name string
|
||
|
}
|
||
|
|
||
|
// 设置一个变量作为单例变量,这是一个私有变量,包外不可访问
|
||
|
var instance *example
|
||
|
|
||
|
// 写一个方法用来返回单例
|
||
|
func GetExample() *example {
|
||
|
|
||
|
// 存在线程安全问题,高并发时有可能创建多个对象
|
||
|
if instance == nil {
|
||
|
instance = new(example)
|
||
|
}
|
||
|
return instance
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
s := GetExample()
|
||
|
s.name = "第一次赋值单例模式"
|
||
|
fmt.Println(s.name)
|
||
|
|
||
|
s2 := GetExample()
|
||
|
fmt.Println(s2.name)
|
||
|
}
|