首页 > 解决方案 > 定义一个常量会消耗一些内存吗?

问题描述

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

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

问题

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

我应该遵循什么要求?

标签: go

解决方案


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

不。

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

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

但是,通常常数不存在于真空中。它们通常在您的代码中的某处使用。例如:

const defaultName = "Unnamed"

/* then later */
var name = defaultName

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

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

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

var name = "Unnamed"

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


推荐阅读