登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-17 12:09:23 256浏览 收藏

将结构体用于常量分组会带来几个副作用。首先,它在运行时分配内存,降低了效率。其次,本来可以在编译时预先计算的常量值现在需要在运行时计算。此外,对于导出的符号,任何导入该包的人都可以修改这些值,这可能会导致不可预料的行为。最后,这种做法不符合惯例,可能会使代码难以理解。

问题内容

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

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


解决方案


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

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

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

今天关于《使用结构体对常量进行分组有哪些副作用》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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