go - 使用结构对常量进行分组的副作用是什么
问题描述
我知道我们不能在 Go 中使用 struct 作为常量。但我想将我的常量分组以获得更简洁的代码,而不是有许多带有一些前缀的常量,所以我这样做:
var SomeStatus = struct {
Active int
Inactive int
Others int
}{
Active: 1,
Inactive: 2,
Others: 3
}
// usage example
status = Status.Active
// example with some prefix
const StatusActive = 1
const StatusInactive = 2
const StatusOthers = 3
const OtherConstantVariable = 1
...
如果没关系,变量的值可以改写。这个技巧的另一个副作用是什么?
解决方案
这个技巧的另一个副作用是什么?
我能想到的那些。可能还有其他:
- 它的效率较低,因为变量分配运行时内存。
- 由于常数而可以在编译时预先计算的任何值现在将在运行时计算。
- 对于导出的符号,任何导入包的人都可以在运行时进行修改。
- 这不是惯用的,因此可能会使任何看到您的代码的人感到困惑。
- 来自无类型常量的灵活性丧失了。
推荐阅读
- r - Plotly R - 将 yaxis 标签从数字转换为定义的时间或数字
- c - c中的指针和对内存的访问。当心
- c# - 从 .netcore 应用程序运行时,GRPC Init 抛出“IOException:无法绑定端口”
- android - 存储和初始化 android App 的通用值(例如:屏幕密度)
- mongodb - Tableau 和 Mongodb:警告:没有为 mongosqld 启用访问控制
- react-native - 在 React Native 中将状态传递给另一个组件
- javascript - 如何获取对象中每个键的值并对其进行评估?
- google-kubernetes-engine - 如何从“LEGACY”子网更新默认 GKE VPC?
- ruby-on-rails - 在 Rails 中的 Stripe::Product.list 中显示价格
- sql-server - 将 n 列从纯文本子查询转换为分隔字符串