定义一个常量会消耗一些内存吗?

我正在使用 Go 构建一个应用程序。

我需要为架构目的定义很多常量。就像我们有一个名为的部分posts,我想对其执行一些操作。其日志将以 类型保存在系统中posts

问题

我有大约 50 个这样的部分。为了便于使用节类型,我想将节类型定义为常量。但是像变量一样在 Go 中消耗了一些空间,常量也是吗?我应该像这样定义它们用于多用途还是用posts字符串在任何地方引用类型。

我应该遵循什么来满足我的要求?

回答

定义一个常量会消耗一些内存吗?

不。

是的。呃,有点,但不是真的。

常量是 Go 中的编译时概念。这意味着它们在程序运行时实际上并不存在,所以从这个意义上说,不,它们不使用内存。

然而,通常常量并不存在于真空中。它们通常在您的代码中的某个地方使用。例如:

const defaultName = "Unnamed"

/* then later */
var name = defaultName

现在该变量name正在使用内存,并从常量 分配了一个值defaultName。所以常量本身并不使用内存,但引用常量的东西使用内存。您还可以创建许多(可能数以千计或更多)变量,它们都引用同一个常量,因此会使用很多倍的内存。

通常,您可以想象每个常量都被替换为其字面值。如果该文字值将“消耗内存”,则内存被消耗。

也就是说,这相当于上面的代码片段:

var name = "Unnamed"

因此,常量使用(或不使用)与文字值使用(或不使用)相同的内存。


以上是定义一个常量会消耗一些内存吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>