Go 小技巧:巧用空结构体节省内存

简介: Go 小技巧:巧用空结构体节省内存

Go 小技巧:巧用空结构体节省内存

在 Go 语言中,struct{} 不包含任何字段,大小为零。这个特性在特定场景下能有效节省内存。

1. 实现 Set 集合

Go 没有内置 Set,通常用 map[Type]struct{} 模拟,比用 map[Type]bool 更省内存:

set := make(map[string]struct{
   })
set["key1"] = struct{
   }{
   }
_, ok := set["key1"] // 检查存在性

2. 通知型 Channel

当我们只需要“信号”而不需要传递数据时,用 chan struct{}

done := make(chan struct{
   })
go func() {
   
    // 执行任务
    close(done) // 关闭即发送通知
}()
<-done // 等待完成

3. 控制结构占位

在需要占位但无实际意义的地方使用,比如某些方法的接收者:

type worker struct{
   }
func (worker) doWork() {
    ... }

4. 性能对比

map[string]bool 的 value 占用 1 字节,而 struct{} 占用 0 字节。当 map 元素达到百万级别时,能节省约 1MB 内存,对 GC 也更友好。

注意

空结构体在栈上可能不分配内存,但在逃逸到堆后,多个变量可能共享同一块内存地址。使用时需注意语义清晰,避免过度优化。

相关文章
|
1天前
|
Go
Go 空结构体的魔力:不占内存的优雅用法
Go 空结构体的魔力:不占内存的优雅用法
201 134
|
1天前
|
Python
5个提升Python编程效率的技巧
5个提升Python编程效率的技巧
204 132
|
1天前
|
SQL 安全 大数据
PHP开发中的几个实用技巧
PHP开发中的几个实用技巧
202 134
|
1天前
|
人工智能 架构师 前端开发
OpenClaw阿里云+本地部署子代理军团保姆级流程:+Coding Team Setup实战指南
很多用户使用OpenClaw时,仅依赖单一主代理,未能充分发挥其潜力。而子代理模式能让OpenClaw化身“AI军团”——每个子代理拥有独立的workspace、soul和memory,各司其职又协同作战。Coding Team Setup v2.0技能的推出,彻底解决了子代理配置复杂、操作失败率高的痛点,支持灵活搭建2-10人协作团队,适配多场景开发需求。
107 5
OpenClaw阿里云+本地部署子代理军团保姆级流程:+Coding Team Setup实战指南
|
1天前
|
人工智能 API 开发者
OpenClaw低成本云上及本地部署喂饭级指南:阿里云百炼Coding Plan API多模型配置实操(Qwen3.5-Plus、Kimi-K2.5、GLM-5)
在AI编程与自动化场景中,API成本过高是开发者普遍面临的痛点——高频次使用下,按token计费的模型服务往往带来不可预期的开支。2026年阿里云百炼Coding Plan的升级,为这一问题提供了高效解决方案:以固定包月模式聚合Qwen3.5-Plus、Kimi-K2.5、GLM-5等8款主流模型,一个API Key即可自由切换,大幅降低使用成本。
240 7
|
1天前
|
人工智能 API 网络安全
OpenClaw阿里云和Windows/Mac本地部署,接入免费模型 NVIDIA NIM GLM-5/Kimi K2.5 配置指南
2026年,英伟达NIM模型推理平台迎来重要更新——免费开放智谱GLM-5与月之暗面Kimi K2.5两款国产顶级模型的调用权限。这两款模型均位列WebDev Leaderboard第一梯队,在推理、编码、长文本处理等场景表现优异,且无需付费即可通过API接入使用,为OpenClaw用户提供了零成本的高阶模型选择。
310 4
|
1天前
|
人工智能 监控 数据安全/隐私保护
从部署到用活!OpenClaw阿里云+本地部署保姆级教程+skill真实场景实操
凌晨三点,当你进入梦乡,AI助手仍在自动整理日程、监控服务器状态、撰写拖延已久的文章——这不是科幻场景,而是OpenClaw用户的日常。OpenClaw(原Clawdbot、Moltbot)作为2026年热门的开源AI智能体工具,核心优势在于“自主执行任务”:无需持续指令,只需明确目标,就能自动规划流程、调用工具、推进进度,被社区称为“有很多手的大龙虾”。
129 3
|
1天前
|
人工智能 自然语言处理 网络安全
人人都是开发者:OpenClaw部署保姆级教程,集成 Vibe Coding 提示词无代码开发指南
2026年,Vibe Coding的兴起彻底打破了编程门槛——即使是零基础小白,也能通过自然语言与AI协作,将想法转化为可运行的产品。而OpenClaw作为AI自动化领域的核心工具,搭配专属Vibe Coding提示词,能让“无代码开发”成为现实:用户负责阐述产品愿景,OpenClaw承担技术决策、架构设计与代码执行,全程无需手动编写一行代码。
109 2
|
1天前
|
人工智能 弹性计算 自然语言处理
OpenClaw Skills是什么、能做什么?OpenClaw Skills 安装保姆级指南:让AI Agent升级为“会干活”
2026年,OpenClaw(原Clawdbot、Moltbot)凭借“自然语言指令+任务自动执行”的核心能力,成为AI自动化领域的热门工具。而支撑其突破“纯对话”局限、实现多元化实操的关键,正是OpenClaw Skills(技能插件)——它就像给AI大脑装上“灵活双手”,让OpenClaw从“只会说”升级为“会做事”,真正成为提升效率的“专属数字员工”。
319 1
|
1天前
|
人工智能 Linux API
告别"书呆子"AI!OpenClaw/Clawdbot部署实操+集成搜索skill方案,让AI Agent 自主进化!
OpenClaw作为2026年热门的开源AI助手,虽具备代码生成、文件处理等核心能力,但默认缺乏实时搜索功能——就像只读过旧书的书呆子,无法获取最新资讯、技术文档与行业数据。对iOS开发者而言,可能因不了解iOS 18新增API导致代码失效;对内容创作者来说,难以引用最新数据支撑文章观点。给OpenClaw添加搜索功能,如同为其装上"眼睛",使其能实时感知外界信息,真正实现"知行合一"。
179 1