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 语言设计哲学的完美体现:简单、高效、优雅。下次遇到需要“存在性”而非“值”的场景,别忘了这个零成本的工具。

相关文章
|
4月前
|
存储 消息中间件 关系型数据库
(二)走进阿里云实时计算Flink版-场景案例篇
阿里云实时计算Flink版产品负责人黄鹏程(马格)介绍:基于Apache Flink打造的企业级全托管实时计算平台,支持批流一体、湖仓融合、实时风控与AI推理等场景,助力满帮、车企等客户降本增效35%,SLA达99.9%。
1210 3
(二)走进阿里云实时计算Flink版-场景案例篇
|
3月前
|
机器学习/深度学习 存储 缓存
大模型架构算力对比:Decoder-only、Encoder-Decoder、MoE深度解析.71
本文深入解析三大主流大模型架构(Decoder-only、Encoder-Decoder、MoE)的算力消耗差异,聚焦注意力机制复杂度、参数量与计算密度三大维度。通过公式推导、代码模拟与可视化图表,揭示MoE稀疏激活的显著节算优势及瓶颈,剖析长文本场景下的“平方级算力黑洞”成因,并提供面向不同场景的架构选型建议。
868 20
|
4月前
|
存储 Java
java synchronized 锁升级:从偏向锁到重量级锁的底层自适应优化
`synchronized` 是Java核心同步机制,JDK 1.6起引入锁升级(无锁→偏向锁→轻量级锁→重量级锁),依托对象头Mark Word动态适配竞争强度,兼顾性能与稳定性,是并发编程必懂的底层逻辑。(239字)
563 8
|
4月前
|
存储 C语言
C语言深度解析:static 关键字的三大核心本质
`static`是C语言中兼具生命周期、作用域与链接属性控制的关键字:修饰局部变量使其驻留静态区、仅初始化一次;修饰全局变量或函数则限定为文件内私有,有效避免命名冲突、实现模块化封装与内存精准管理。(239字)
|
4月前
|
安全 大数据 PHP
PHP开发中的几个实用技巧,让你的代码更优雅
PHP开发中的几个实用技巧,让你的代码更优雅
328 137
|
4月前
|
人工智能 JavaScript API
OpenClaw 是什么?OpenClaw 能干什么?OpenClaw 部署保姆级图文教程及常见问题汇总解答
OpenClaw(曾用名Clawdbot、Moltbot)是2026年开源AI智能体领域的热门工具,核心优势在于“自然语言指令+主动执行任务”,无需复杂编程基础,普通人也能通过简单指令,让其完成文件管理、网页抓取、代码生成、办公协同等重复性工作,相当于拥有专属的AI助理,大幅提升个人与轻量团队的工作效率。其开源特性与丰富的Skills生态,让它能够适配多种使用场景,而阿里云针对新手用户定制的专属部署方案,更是彻底降低了入门门槛,预置全套运行环境与依赖组件,无需手动调试各类工具,全程可视化操作+简单代码命令,新手零基础也能在20分钟内完成部署,轻松解锁其自动化能力。
1651 16
|
4月前
|
人工智能 自然语言处理 Ubuntu
阿里云+本地从部署OpenClaw到变现!+ 赚钱工具skill封装技巧(5大高盈利Wrapper开发实操)
OpenClaw(原Clawdbot)作为2026年开源AI领域的核心工具,凭借“自然语言指令+自动化任务执行”的核心能力,成为打破技术壁垒的关键。它本身免费开源,却因配置门槛卡住了95%的潜在用户——普通用户需要花费数十小时学习Skill开发、API对接、模型适配等复杂操作,才能实现个性化需求。这一“能力与可及性的鸿沟”,催生了全新的商业化机会:封装预配置的OpenClaw套装(即Wrapper),向特定行业用户出售“现成可用的数字员工”。
1278 7
|
3月前
|
存储 缓存 算法
大模型应用:RETE 算法高效规则匹配:智能决策系统中的核心模式匹配技术.90
RETE算法是高效规则匹配的核心技术,通过构建共享判别网络实现“空间换时间”,将匹配复杂度从O(M×N)降至接近O(N),广泛应用于金融风控、电商营销等低延迟场景。本文系统解析其原理、网络结构(Alpha/Beta节点)、增量匹配机制,并结合大模型展示“AI建议+规则兜底”的合规落地范式。
433 6
|
4月前
|
存储 调度 异构计算
推理平台全景
本次分享介绍了常见的开源推理平台项目: NVIDIA Dynamo, llm-d, Kthena, RoleBasedGroup, OME, AiBrix, KServe
893 8
推理平台全景
|
4月前
|
传感器 数据采集 运维
VAE 原理拆解:从概率编码到潜在空间正则化
本文深入浅出拆解VAE构建全流程,聚焦实现、训练、调试与部署,而非纯数学推导。逐行解读PyTorch最小实现,详解编码器、重参数化、解码器三大组件及损失设计,并系统介绍训练后五大推理模式:异常检测、生成合成数据、条件生成、潜在空间分析与数据填补。
587 7
VAE 原理拆解:从概率编码到潜在空间正则化