go - 使用结构对常量进行分组有哪些副作用

标签 go memory struct constants

我知道我们不能在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
...
如果没关系,可以重写变量的值。
此技巧的其他副作用是什么?

最佳答案

此技巧的其他副作用是什么?

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

  • 效率较低,因为变量分配了运行时内存。
  • 由于常量,可以在编译时预先计算的任何值现在将在运行时计算。
  • 对于导出的符号,它使您可以在运行时由任何导入您的包的人进行修改。
  • 这不是惯用语言,因此可能会使看到您代码的任何人感到困惑。
  • 失去了来自无类型常量的灵活性。
  • 关于go - 使用结构对常量进行分组有哪些副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62898038/

    相关文章:

    c - 是否可以在共享内存上加载共享库?

    r - 如何在页面上查找 R 图形的字节大小?

    c - 在函数中返回结构,编译错误

    go - 如何提取嵌套的 JSON 数据?

    loops - slice 范围的循环索引

    security - 将证书和 key 作为字符串传递给 ListenAndServeTLS

    c++ - 结构定义后的变量名

    go - 如何添加关系数据

    java - 如何测量C/C++/Java程序在执行过程中使用的内存?

    c - (伪)C 中的 OOP 从其函数指针获取结构对象