使用结构对常量进行分组的副作用是什么



我知道我们不能在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
...

如果没有关系,可以重写变量的值。这个把戏的另一个副作用是什么?

这个技巧的另一个副作用是什么?

我能想到的那些。可能还有其他:

  • 由于变量分配运行时内存,因此效率较低
  • 由于常量的原因,任何可以在编译时预先计算的值现在都将在运行时计算
  • 对于导出的符号,任何导入包的人都可以在运行时对其进行修改
  • 它不是惯用的,因此可能会让任何看到您代码的人感到困惑
  • 失去了非类型化常量所带来的灵活性

最新更新