【发布时间】:2019-07-01 01:25:45
【问题描述】:
我最近加入了一个项目,其中有一个外部配置样式服务 - 基本上是一个使用 jsonrpc 调用的 KV 存储。
不要问它为什么在那里..
我需要查询此配置服务以获取代码库内部使用的白名单。
但是,如果不使用全局变量,我无法找到解决方案。例如,我调用一个函数从包A 获取配置,但必须导出 var 才能在其他包中使用。我最初的解决方案是使用gocache 在包中设置缓存并导出缓存访问器以具有某种类型限制。然而,这增加了复杂性,而且看起来太多了,而不仅仅是将 val 存储在导出的 var 中。
我看到标准库中使用了全局变量,但很困惑,因为这违反了封装法则?
不胜感激如何解决此类问题的任何建议。
【问题讨论】:
-
谁告诉你全局变量本身是坏的,或者没有任何东西必须导出是错误的。有些东西只是是全局的,所以把它们塞进一个变量或者有一个导出的函数。这里没有问题。
-
能否创建一个设置包,也可以在其他包中使用?
标签: go