Go语言技术文章
-
Go 用 archive/zip 生成的 ZIP 无法打开时,先检查条目写入、zip.Writer.Close 和底层输出的关闭顺序,再用 zip.Reader 区分截断、写入失败与 CRC 校验问题。489 收藏 -
Go 客户端连续调用登录接口和业务接口时,应复用同一个配置了 cookiejar.Jar 的 http.Client。本文说明 Cookie 的域名、路径、协议和过期边界,并给出公共后缀列表、多账号隔离与内存持久化注意事项。104 收藏 -
Go map 单值读取时,缺失键和实际零值看起来一样。本文用双值索引解释如何判断键是否存在,并覆盖 nil map、不同值类型、默认值与业务封装边界。298 收藏 -
Go TCP 是字节流,不能把一次 Read 当成一条消息。本文用 4 字节大端长度前缀设计帧协议,演示如何用 io.ReadFull 处理半包与粘包、限制最大帧大小,并补齐发送端的部分写入处理。407 收藏 -
Go 的 sync.Mutex 可以使用零值,但首次使用后不能再复制。本文说明按值传参、range、返回值为什么会复制锁,并给出指针接收者、快照类型和 go vet 检查方案。233 收藏 -
Go 处理大文件时不要先读入完整 []byte。本文用 base64.NewEncoder 和 io.Copy 流式转换,说明 encoder.Close 的必要性,并比较标准、URL 安全和无填充 Base64 的适用场景。394 收藏 -
Go sync.Pool 里的对象会消失,是因为它只承诺临时对象复用,不承诺持久保存:池中元素可被运行时自动移除,Get 也可能直接把池当作空池。本文用 New、Get、Put 示例说明正确用法,并划清 sync.Pool 与业务缓存的边界。109 收藏 -
Go 结构体切片按多个字段排序时,先比较主字段,只有主字段相等才比较次字段。本文用 slices.SortFunc 给出姓名升序、年龄升序及混合升降序写法,并说明原地排序、不稳定排序和旧版 Go 的兼容处理。280 收藏 -
Go 的 bytes.Buffer.Bytes 返回的是共享底层存储的未读区域切片。本文区分 Read、Write、Reset、Truncate 带来的视图失效与真实覆盖,并给出安全复制方案。462 收藏 -
Golang · Go教程 | 1天前 | HTTP · 文件上传 · Go教程 · multipart · 文件上传 Go HTTP客户端 mime/multipart multipart.Writer
Go HTTP 客户端用 multipart.Writer 同时上传文件和表单字段时,应使用 WriteField 与 CreateFormFile 写入同一个 body,最后 Close 并复用 FormDataContentType 设置请求头。本文给出完整写法、资源关闭顺序和常见排查点。489 收藏 -
Go 的 Header.Get 返回空字符串时,先检查是否用 Header.Set 或 Header.Add 写入、是否把请求头和响应头对象混用了,以及是否直接向 map 写入了非规范化键。118 收藏 -
用 Go 标准库 http.ServeContent 实现支持 Range 的文件下载接口,理解 200、206、416、If-Range 与 io.ReadSeeker 的边界。260 收藏 -
Go 使用 filepath.Ext 判断文件扩展名时,只会返回最终路径元素最后一个点开始的后缀。本文结合隐藏文件、多重后缀和大小写,给出可复用的判断规则。474 收藏 -
Golang · Go教程 | 1天前 | Excel · csv · Go教程 · 文件编码 · 报表导出 · Excel Go encoding/csv csv.Writer UTF-8 BOM CSV乱码
Go 的 encoding/csv 负责 CSV 字段和缓冲写入,但不会自动添加 UTF-8 BOM。本文说明如何在创建 csv.Writer 前写入 BOM,并正确处理 Flush、Error、CRLF 和 Excel 导入编码选择,解决中文 CSV 直接打开乱码问题。124 收藏 -
Golang · Go问答 | 1天前 | golang · 文件操作 · 权限管理 · Go问答 · os.OpenFile · Go 文件权限 chmod os.OpenFile umask Go问答
Go 使用 os.OpenFile 创建文件时,传入的 perm 不是最终权限。本文拆解 umask、文件是否已存在以及 Chmod 的关系,并给出一套可复用的排查与修正写法。486 收藏