Go写二进制文件须用binary.Write、io.Write或[]byte操作,禁用字符串转换;binary.Write要求结构体字段导出、字节序明确、不支持map/slice;io.Write需检查返回值;变长数据需手动编码长度前缀。
Go 语言写入二进制文件,核心是避免用 fmt.Fprintf 或 strconv 转字符串,必须用 binary.Write、io.Write 原始字节流,或直接操作 []byte。
binary.Write 写结构体到二进制文件适合固定格式的序列化(如网络协议头、自定义二进制格式),要求字段对齐、字节序明确。它不处理嵌套切片/指针,只支持基础类型和数组/结构体。
io.Writer(如 *os.File),不能传字符串或缓冲区binary.LittleEndian 或 binary.BigEndian
binary.Write 会忽略map、slice(除非长度固定且已知,用数组代替)package main
import (
"encoding/binary"
"os"
)
type Hea
der struct {
Magic uint32
Length uint16
Flags byte
}
func main() {
f, _ := os.Create("header.bin")
defer f.Close()
hdr := Header{Magic: 0x474f4c41, Length: 1024, Flags: 0x01}
binary.Write(f, binary.LittleEndian, hdr) // 写入 7 字节:4+2+1
}
io.Write 直接写 []byte
最底层、最可控的方式,适用于已知原始字节序列的场景(如拼接协议帧、写图片头、加密后数据)。
Write 返回实际写入字节数和可能的错误,必须检查是否写满(尤其在循环中)Write 一次写完全部数据;小文件通常没问题,但管道、网络或满磁盘时可能部分写入bufio.Writer 减少系统调用,但要注意 Flush() 否则数据滞留package main
import (
"os"
)
func main() {
f, _ := os.Create("raw.bin")
defer f.Close()
data := []byte{0x00, 0x01, 0x02, 0xff, 0xaa}
n, err := f.Write(data)
if err != nil || n != len(data) {
panic("write failed or partial")
}
}
当需要混合类型或动态长度时,binary.Write 不够用,得手动编码字节布局。
uint32),再写字节内容,否则读取端无法知道边界LittleEndian,读也必须用同一个append 拼接字节切片比多次 Write 更高效,也更容易控制顺序package main
import (
"encoding/binary"
"os"
)
func writeStringWithLen(w *os.File, s string) {
b := []byte(s)
header := make([]byte, 4)
binary.LittleEndian.PutUint32(header, uint32(len(b)))
w.Write(header)
w.Write(b)
}
func main() {
f, _ := os.Create("str.bin")
defer f.Close()
writeStringWithLen(f, "hello世界")
}
二进制写入真正容易出错的地方,不是语法,而是字节序误配、结构体字段未导出、或对 Write 返回值视而不见——尤其在跨平台或对接 C/C++ 程序时,一个字节错位,整段数据就不可读。
# go
# golang
# 编码
# app
# 字节
# ai
# c++
# 字符串
# 结构体
# 循环
# 指针
# 切片
# append
# map
# 不支持
# 返回值
# 变长
# 就不
# 适用于
# 自定义
# 要先
# 它不
# 或对
# 视而不见
相关文章:
大连 网站制作,大连天途有线官网?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
家庭建站与云服务器建站,如何选择更优?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
简单实现Android文件上传
建站主机选哪种环境更利于SEO优化?
如何通过可视化优化提升建站效果?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
行程制作网站有哪些,第三方机票电子行程单怎么开?
建站VPS能否同时实现高效与安全翻墙?
海南网站制作公司有哪些,海口网是哪家的?
南平网站制作公司,2025年南平市事业单位报名时间?
建站主机与虚拟主机有何区别?如何选择最优方案?
制作表格网站有哪些,线上表格怎么弄?
宝塔建站后网页无法访问如何解决?
如何获取免费开源的自助建站系统源码?
已有域名和空间如何搭建网站?
教学网站制作软件,学习*后期制作的网站有哪些?
广州营销型建站服务商推荐:技术优势与SEO优化解析
香港服务器如何优化才能显著提升网站加载速度?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
北京企业网站设计制作公司,北京铁路集团官方网站?
如何在香港免费服务器上快速搭建网站?
三星网站视频制作教程下载,三星w23网页如何全屏?
活动邀请函制作网站有哪些,活动邀请函文案?
建站之星如何快速更换网站模板?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何通过cPanel快速搭建网站?
建站之星安装步骤有哪些常见问题?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
建站主机如何选?性能与价格怎样平衡?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
PHP 500报错的快速解决方法
网站代码制作软件有哪些,如何生成自己网站的代码?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
智能起名网站制作软件有哪些,制作logo的软件?
IOS倒计时设置UIButton标题title的抖动问题
网站制作报价单模板图片,小松挖机官方网站报价?
广东企业建站网站优化与SEO营销核心策略指南
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
建站主机SSH密钥生成步骤及常见问题解答?
如何配置IIS站点权限与局域网访问?
如何选择高效稳定的ISP建站解决方案?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何在Windows服务器上快速搭建网站?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
如何正确下载安装西数主机建站助手?
如何快速生成凡客建站的专业级图册?
*请认真填写需求信息,我们会在24小时内与您取得联系。