Go语言的单例实现篇
前言
本篇文章简述如何创建单例模式,之后就看你如何更好的玩转它
无费话之直接上代码
package main
import (
"fmt"
"sync"
)
var UserOnce sync.Once
var UserData *User
type User struct {
UserName string
Age int
UserCat Cat
}
type Cat struct {
CatName string
Money float32
}
// 初始化单例的方法
func GetUserData() *User {
// 这个方法只会执行一次
UserOnce.Do(func() {
UserData = &User{
UserName: "ppx",
Age: 12,
UserCat: Cat{
CatName: "玛莎拉蒂",
Money: 1,
},
}
})
return UserData
}
// 这个方法是main执行之前执行的,所以很适合用来搞事情
func init() {
// 初始化单例(当然你也可以不在这里初始化)
GetUserData()
// 初始化修改单例
// GetUserData().UserName = "xxp"
}
func main() {
// UserData.UserName = "小m"
fmt.Println(UserData)
fmt.Println(GetUserData())
}
总结
a :=“继续学习,使我们的知识更加丰富。”;
fmt.Printf(“%s”,a);