Dictionary 在Golang项目中使用嵌套常量变量的最佳实践?

Dictionary 在Golang项目中使用嵌套常量变量的最佳实践?,dictionary,go,Dictionary,Go,在NodeJS中,当我们想要声明某个常量变量并希望在整个项目中使用它们时,我们可以编写如下代码: //const.js module.exports.mqttQOS={ 大气:0, 至少一次:1, 正确答案:2, }; 因此,我们可以像使用constant.mqttQOS.AtMostOnce那样使用它,并在使用constantkos.errorreferering时抛出一个错误 在Golang,我们只能做以下事情: var mqttQoS=map[string]字节{ “大气”:0, “至少

在NodeJS中,当我们想要声明某个常量变量并希望在整个项目中使用它们时,我们可以编写如下代码:

//const.js
module.exports.mqttQOS={
大气:0,
至少一次:1,
正确答案:2,
};
因此,我们可以像使用
constant.mqttQOS.AtMostOnce那样使用它,并在使用
constantkos.errorreferering
时抛出一个错误

在Golang,我们只能做以下事情:

var mqttQoS=map[string]字节{
“大气”:0,
“至少一次”:1,
“精确”:2,
}
并将其用作:
fmt.Println(mqttQoS[“AtMostOnce”])//print:0

但是,它将打印
fmt.Println(mqttQoS[“ErrorRefering”])//print:0
,因为Golang映射的特性(类似于Python的defaultdict())

尽管我们可以通过以下方式防止此错误:

var mqttQoS=map[string]字节{
“大气”:0,
“至少一次”:1,
“精确”:2,
}
结果,ok:=mqttQoS[“错误引用”]
如果可以的话{
fmt.Println(“值:”,结果)
}
回到我的问题上来,除了使用
ok
来限制错误引用, 在Golang中处理嵌套常量对象是否有更好的做法?

更新: 因此,我可以使用like
mqttQoS.AtMostOnce
并在我
mqttQoS.errorreference
时引发错误

定义另一种
类型是一种方法,但这在大型项目中是否常见


谢谢

参考注释,使用嵌套常量在Golang中并不常见

常量文本
可能是这个问题的解决方案

在github.com/golang上有相关的讨论和建议


“在Golang中处理常量对象是否有更好的做法?”是的,使用普通常量,即使用
const
关键字来声明它们,不要将贴图用作“常量”。如果必须,可以在自己的包中声明常量。引用未声明的常量将在编译时失败。有关详细信息:,和。另外,请看一看感谢您的评论,我确信我了解
const
iota
,以及如何声明和使用它们。在处理大型项目时,您可能希望在一个文件中管理所有常量变量。在某些情况下,您还需要一些常量变量,其中包含另一个常量变量,正如我在上面的NodeJS示例中提供的。在围棋中产生这种效果的最佳实践是什么?或者Go不推荐这种管理常量var的方法,也不推荐嵌套伪常量。如果希望嵌套变量在错误引用时“膨胀”,则可以使用结构,嵌套深度随您的需要而定。与映射不同,它也是按变量(字段)键入的。“常量变量”是一种矛盾修饰法。挑一个。Go不支持常量复合类型,例如结构或映射。默认情况下使用常量是不正常的,就像现在JavaScript中的情况一样(老实说,我从来都不理解这种做法)。