Go语言的单例实现篇

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值