go - 定义一个常量会消耗一些内存吗?
问题描述
我正在使用 Go 构建应用程序。
我需要为架构目的定义很多常量。就像我们有一个名为的部分posts
,我想对它执行一些操作。它的日志会以类型保存在系统中posts
。
问题
我有大约 50 个这样的部分。为了便于使用节类型,我想将节类型定义为常量。但是像变量一样在 Go 中消耗一些空间,常量也一样吗?我应该像这样为多用途定义它们还是用posts
字符串在任何地方引用类型。
我应该遵循什么要求?
解决方案
定义一个常量会消耗一些内存吗?
不。
是的。呃,有点,但不是真的。
常量是 Go 中的编译时概念。这意味着它们在程序运行时实际上并不存在,所以从这个意义上说,不,它们不使用内存。
但是,通常常数不存在于真空中。它们通常在您的代码中的某处使用。例如:
const defaultName = "Unnamed"
/* then later */
var name = defaultName
现在该变量name
正在使用内存,并且从常量中为其分配了一个值defaultName
。所以常量本身并不使用内存,但引用常量的东西使用内存。您还可以创建许多(可能数千或更多)变量,它们都引用相同的常量,因此会使用更多的内存。
通常,您可以想象每个常量都被其字面值替换。如果该文字值将“消耗内存”,则消耗内存。
也就是说,这相当于上面的代码片段:
var name = "Unnamed"
因此,常量使用(或不使用)与文字值使用(或不使用)相同的内存。
推荐阅读
- android - 在带有 Android 的 Cordova 中使用 face-api.js
- vb.net - 面板上的自动滚动一直跳到顶部
- time-complexity - 为什么复杂度是 O(log(n^2)*(log(n))
- html - 用户将文件下载到他们的本地目录
- spring - Hibernate 二级缓存在运行几个弹簧测试时关闭
- apache-camel - 带有 Camel、MessageProducer 的 Azure 服务总线 (ASB) 已关闭 (amqp:link:detach-forced)
- tensorflow - 在 tf 2.0 中调整图像大小的首选方法是什么?
- c - 需要对近乎无限的数据点集进行 FFT
- c# - 使用反射从类中填充字典
- dictionary - 如何创建项目并将其添加到字典