为什么常量值只能是基本类型 ?

为什么常量不是是map,slice,struct呢?

因为常量需要在编译期,就确定其值,并且将其值直接编译到程序中了。也就是不需要再去申请内存地址了。

复杂的类型,比如map,struct,slice,它们是要在运行期间初始化的,也就是申请内存的。

当然还是有曲线办法的:
我们把复杂类型序列化为字符串就ok了。

比如 json 本身是一种数据结构,但也可以当做字符串的。

类本身也是一种结构,同样也可以作为字符串的。

本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
Junwind
讨论数量: 1

我认为这是一个go设计原因,所谓常量就是一个 readOnly 的变量,所以从逻辑上来说并不是无法实现,其他语言也存在一些特殊类型的常量。这里更多是golang当前是如此设计的。

3个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
躺平大叔 @ 躺平社区
文章
142
粉丝
17
喜欢
107
收藏
63
排名:258
访问:3.7 万
私信
所有博文
社区赞助商