概述
服务程序从yaml文件加载配置后解析为struct类型,保存在全局变量中。
问题
功能模块获取配置时,只需调用全局变量,但是某个模块如果不小心改了全局变量会导致其它模块受到影响
需求
变量设置为只读,不可更改,保证其它模块获取到的还是原始yaml文件里的内容。
请问怎么实现呢?在此谢过
有疑问加站长微信联系(非本文作者)

服务程序从yaml文件加载配置后解析为struct类型,保存在全局变量中。
功能模块获取配置时,只需调用全局变量,但是某个模块如果不小心改了全局变量会导致其它模块受到影响
变量设置为只读,不可更改,保证其它模块获取到的还是原始yaml文件里的内容。
请问怎么实现呢?在此谢过
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
封装成读取方法
加个读写锁,然后获取一个读锁,不释放
@liangmanlin 如果读取是一个切片活着map呢
@liangmanlin 我也是封装了,但是就是对切片和mao不生效
clone出去啊
map和slice返回一个reader,调用者只能调用reader去读取里面的数值
如上
用interface去承接这个全局变量类型,然后提供对应的只读方法,修改就不加了
用闭包,读取函数局部变量
type Config struct{ config }
func (c *Config)GetXxxx()xx{ return c.xxx }
不想变的设置为常量呗。偷懒总会造成意想不到的结果。
有没有可能 对象不允许用 const 声明