Go 零拷贝是什么?切片共享与 unsafe 转换的实现方式
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
零拷贝指数据在传输/转换时避免复制,直接引用原内存。Go 中的场景:① 切片共享底层数组(s2 := s1[1:] 不复制);② string 与 []byte 零拷贝转换(unsafe.Pointer 转换,绕过复制,风险高需保证只读);③ io.Reader 直接读写用户 buffer(io.CopyBuffer);④ sendfile/splice 等系统调用(网络发送文件)。安全零拷贝优先用切片共享;unsafe 转换只读场景谨慎使用,1.20+ 可用 unsafe.String/unsafe.SliceData 更安全。
回复
0 条回复