登录
首页 >  Golang >  Go问答

最佳实践:在 Golang 中共享和重用嵌套常量的方法

来源:stackoverflow

时间:2024-02-25 19:39:24 464浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《最佳实践:在 Golang 中共享和重用嵌套常量的方法》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

在 nodejs 中,当我们想要声明一些常量变量并希望它们在整个项目中使用时,我们可能会这样写:

// const.js
module.exports.mqttqos = {
    atmostonce:  0,
    atleastonce: 1,
    exactlyonce: 2,
};

因此,我们可以像 constant.mqttqos.atmostonce 一样使用它,并在使用 constantqos.errorrefering 时抛出错误。

在 golang 中我们只能做这样的事情:

var mqttqos = map[string]byte{
    "atmostonce":  0,
    "atleastonce": 1,
    "exactlyonce": 2,
}

并将其用作:fmt.println(mqttqos["atmostonce"]) // print: 0

但是,由于 golang 映射的特性(如 python 的 defaultdict() ),它会打印 fmt.println(mqttqos["errorrefering"]) // print: 0

尽管我们可以采取一些措施来防止此错误引用:

var mqttQoS = map[string]byte{
    "AtMostOnce":  0,
    "AtLeastOnce": 1,
    "ExactlyOnce": 2,
}
result, ok := mqttQoS["ErrorRefering"]
if ok {
    fmt.Println("value: ", result)
}

回到我的问题,除了使用 ok 来限制引用错误之外, 在 golang 中处理嵌套常量对象有更好的实践吗?

更新: 这样我就可以像 mqttqos.atmostonce 一样使用,并且当我 mqttqos.errorrefer 时会引发错误。

定义另一个 type 是一种方法,但这在大型项目中是常见做法吗?

谢谢!


解决方案


参考评论,使用嵌套 const 并不是 Golang 中的常见做法。

常量文字可能是问题的解决方案。

github.com/golang上有相关讨论和提案

https://github.com/golang/go/issues/21130

理论要掌握,实操不能落!以上关于《最佳实践:在 Golang 中共享和重用嵌套常量的方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>