Go教程技术文章
-
Go 的 encoding/gob 适合在 Go 程序之间保存结构化本地缓存。本文用带版本和过期时间的结构体演示原子写入、恢复、缓存失效处理,以及导出字段和结构体演进时的边界。472 收藏 -
用 encoding/xml.Decoder 按 Token 扫描大型 XML,只在命中目标元素时 DecodeElement,并用 Skip 跳过无关大节点,降低整体加载带来的内存峰值。470 收藏 -
用 encoding/binary 按协议选择 BigEndian 或 LittleEndian,正确读写固定宽度整数,区分结构体布局、切片边界和 Uvarint 变长编码。459 收藏 -
用 io.Pipe 把 Go 的数据生成器直接接到 HTTP 请求体,边编码边上传,不落地临时文件,并正确处理关闭、取消和错误传递。456 收藏 -
用 httptest.NewTLSServer 创建带测试证书的 HTTPS 服务,再使用 server.Client 发起请求,完成 Go 接口单元测试并避开本地证书校验误区。318 收藏 -
Go 合并多个文本文件时,直接把明确顺序的 os.File 交给 io.MultiReader,再用 io.Copy 流式写入输出文件。本文说明分隔符、文件句柄关闭、中途错误和不完整输出的处理方式。120 收藏 -
Go 客户端连续调用登录接口和业务接口时,应复用同一个配置了 cookiejar.Jar 的 http.Client。本文说明 Cookie 的域名、路径、协议和过期边界,并给出公共后缀列表、多账号隔离与内存持久化注意事项。104 收藏 -
Go TCP 是字节流,不能把一次 Read 当成一条消息。本文用 4 字节大端长度前缀设计帧协议,演示如何用 io.ReadFull 处理半包与粘包、限制最大帧大小,并补齐发送端的部分写入处理。407 收藏 -
Go 处理大文件时不要先读入完整 []byte。本文用 base64.NewEncoder 和 io.Copy 流式转换,说明 encoder.Close 的必要性,并比较标准、URL 安全和无填充 Base64 的适用场景。394 收藏 -
Go 结构体切片按多个字段排序时,先比较主字段,只有主字段相等才比较次字段。本文用 slices.SortFunc 给出姓名升序、年龄升序及混合升降序写法,并说明原地排序、不稳定排序和旧版 Go 的兼容处理。280 收藏 -
Go HTTP 客户端用 multipart.Writer 同时上传文件和表单字段时,应使用 WriteField 与 CreateFormFile 写入同一个 body,最后 Close 并复用 FormDataContentType 设置请求头。本文给出完整写法、资源关闭顺序和常见排查点。489 收藏 -
用 Go 标准库 http.ServeContent 实现支持 Range 的文件下载接口,理解 200、206、416、If-Range 与 io.ReadSeeker 的边界。260 收藏 -
Go 的 encoding/csv 负责 CSV 字段和缓冲写入,但不会自动添加 UTF-8 BOM。本文说明如何在创建 csv.Writer 前写入 BOM,并正确处理 Flush、Error、CRLF 和 Excel 导入编码选择,解决中文 CSV 直接打开乱码问题。124 收藏 -
Go 正则表达式可以用 (?P...) 声明命名捕获组,再通过 FindStringSubmatch 和 SubexpIndex 按字段名读取结果。本文说明数字分组的错位风险、命名分组写法,以及 nil、空分组和名称不存在时的处理方式。 434 收藏 -
Go 的 string 下标按 UTF-8 字节计算,直接截取中文可能产生乱码。本文用 []rune、range 和 unicode/utf8 说明安全的按字符截取、计数与非法编码处理方式。240 收藏