Go语言技术文章
-
Go 的 http.Client.Do 返回 404 时 err 仍可能是 nil,因为非 2xx 状态属于服务器响应,不是传输错误。本文区分 err、StatusCode 和响应体读取错误,给出关闭 Body、限制错误正文并映射业务错误的写法。496 收藏 -
用 httptest.NewTLSServer 创建带测试证书的 HTTPS 服务,再使用 server.Client 发起请求,完成 Go 接口单元测试并避开本地证书校验误区。318 收藏 -
Go 的 encoding/json 默认会把 JSON 字符串中的小于号写成 \u003c,这通常是 HTML 安全转义而不是乱码。本文说明如何判断、何时使用 SetEscapeHTML(false),以及关闭后仍需遵守的 HTML 安全边界。474 收藏 -
Golang · Go教程 | 1天前 | 文件操作 · Go教程 · 文本处理 · io.MultiReader · Go io.Copy io.MultiReader 文本文件合并 os.Open
Go 合并多个文本文件时,直接把明确顺序的 os.File 交给 io.MultiReader,再用 io.Copy 流式写入输出文件。本文说明分隔符、文件句柄关闭、中途错误和不完整输出的处理方式。120 收藏 -
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 收藏