Go 空结构体的魔力:不占内存的优雅用法

简介: Go 空结构体的魔力:不占内存的优雅用法

Go 空结构体的魔力:不占内存的优雅用法

在 Go 语言中,有一个常被忽视但极其强大的特性——空结构体 struct{}。它不占用任何内存(unsafe.Sizeof(struct{}{}) 返回 0),却能实现许多优雅的编程技巧。

1. 集合(Set)的简易实现

Go 没有内置 Set 类型,但我们可以用 map 结合空结构体模拟:

set := make(map[string]struct{
   })
set["Go"] = struct{
   }{
   }
if _, ok := set["Go"]; ok {
   
    fmt.Println("元素存在")
}

利用空结构体零内存的特性,比 map[string]bool 更省空间。

2. 通道信号通知

当只需要“通知”而不需要传输数据时,空结构体通道是最佳选择:

done := make(chan struct{
   })
go func() {
   
    // 执行任务
    close(done) // 或 done <- struct{}{}
}()
<-done // 等待任务完成

3. 占位符与方法集合

在接口设计中,空结构体常用来实现只有方法的结构:

type Service struct{
   }
func (Service) DoSomething() {
   }

4. 节省内存的实践

在大型系统中,使用空结构体可以显著减少内存占用。比如百万级元素的 Set,每个元素节省 1 字节,就是 1MB 的优化。

空结构体虽小,却是 Go 语言设计哲学的完美体现:简单、高效、优雅。下次遇到需要“存在性”而非“值”的场景,别忘了这个零成本的工具。

相关文章
|
21天前
|
机器学习/深度学习 存储 缓存
大模型架构算力对比:Decoder-only、Encoder-Decoder、MoE深度解析.71
本文深入解析三大主流大模型架构(Decoder-only、Encoder-Decoder、MoE)的算力消耗差异,聚焦注意力机制复杂度、参数量与计算密度三大维度。通过公式推导、代码模拟与可视化图表,揭示MoE稀疏激活的显著节算优势及瓶颈,剖析长文本场景下的“平方级算力黑洞”成因,并提供面向不同场景的架构选型建议。
389 20
|
23天前
|
存储 消息中间件 关系型数据库
(二)走进阿里云实时计算Flink版-场景案例篇
阿里云实时计算Flink版产品负责人黄鹏程(马格)介绍:基于Apache Flink打造的企业级全托管实时计算平台,支持批流一体、湖仓融合、实时风控与AI推理等场景,助力满帮、车企等客户降本增效35%,SLA达99.9%。
438 3
(二)走进阿里云实时计算Flink版-场景案例篇
|
1月前
|
存储 Java
java synchronized 锁升级:从偏向锁到重量级锁的底层自适应优化
`synchronized` 是Java核心同步机制,JDK 1.6起引入锁升级(无锁→偏向锁→轻量级锁→重量级锁),依托对象头Mark Word动态适配竞争强度,兼顾性能与稳定性,是并发编程必懂的底层逻辑。(239字)
257 8
|
1月前
|
安全 大数据 PHP
PHP开发中的几个实用技巧,让你的代码更优雅
PHP开发中的几个实用技巧,让你的代码更优雅
281 137
|
1月前
|
索引 Python
五个提升效率的Python技巧
五个提升效率的Python技巧
335 134
|
23天前
|
人工智能 安全 API
|
1月前
|
存储 C语言
C语言深度解析:static 关键字的三大核心本质
`static`是C语言中兼具生命周期、作用域与链接属性控制的关键字:修饰局部变量使其驻留静态区、仅初始化一次;修饰全局变量或函数则限定为文件内私有,有效避免命名冲突、实现模块化封装与内存精准管理。(239字)
|
1月前
|
人工智能 自然语言处理 Ubuntu
阿里云+本地从部署OpenClaw到变现!+ 赚钱工具skill封装技巧(5大高盈利Wrapper开发实操)
OpenClaw(原Clawdbot)作为2026年开源AI领域的核心工具,凭借“自然语言指令+自动化任务执行”的核心能力,成为打破技术壁垒的关键。它本身免费开源,却因配置门槛卡住了95%的潜在用户——普通用户需要花费数十小时学习Skill开发、API对接、模型适配等复杂操作,才能实现个性化需求。这一“能力与可及性的鸿沟”,催生了全新的商业化机会:封装预配置的OpenClaw套装(即Wrapper),向特定行业用户出售“现成可用的数字员工”。
887 7
|
1月前
|
人工智能 监控 数据安全/隐私保护
从部署到用活!OpenClaw阿里云+本地部署保姆级教程+skill真实场景实操
凌晨三点,当你进入梦乡,AI助手仍在自动整理日程、监控服务器状态、撰写拖延已久的文章——这不是科幻场景,而是OpenClaw用户的日常。OpenClaw(原Clawdbot、Moltbot)作为2026年热门的开源AI智能体工具,核心优势在于“自主执行任务”:无需持续指令,只需明确目标,就能自动规划流程、调用工具、推进进度,被社区称为“有很多手的大龙虾”。
734 3
|
1月前
|
人工智能 弹性计算 自然语言处理
阿里云+本地部署OpenClaw(Clawdbot)AI Agent效率进阶指南:10个必备OpenClaw Skills解析
很多用户部署OpenClaw(Clawdbot)后,常会陷入“看似强大却不好用”的困境——核心原因在于未搭配合适的Skills(技能插件)。OpenClaw本体如同高性能电脑,而Skills就是各类专业软件,只有装上必备技能,才能真正发挥其自动化办公、开发辅助、内容创作等全场景能力。
1067 2