首页 > 解决方案 > 使用结构对常量进行分组的副作用是什么

问题描述

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

如果没关系,变量的值可以改写。这个技巧的另一个副作用是什么?

标签: gomemorystructconstants

解决方案


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

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

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

推荐阅读