Go语言技术文章
-
Go net.Buffers.WriteTo 返回的 n 可能小于总字节数。本文从官方实现的消费语义出发,说明如何记录基线、区分合法错误与违反 io.Writer 契约的短写,并安全处理剩余数据。196 收藏 -
Go VerifyASN1 验签失败,通常要先检查公钥、原始摘要字节和 ASN.1 签名字节是否来自同一套协议约定。本文给出输入契约、编码区别、签名入口选择和排错表。196 收藏 -
Go slices.Reverse 会直接交换切片中的元素,不返回新切片。本文说明它的最小用法、命名切片类型、nil/空切片边界,以及需要先复制的别名场景。196 收藏 -
Go maps.Collect 可把键值迭代器收集成新 map。以商品库存索引说明业务键清洗、重复覆盖、查询顺序与切片引用共享,并给出需要返回错误时的显式循环方案。196 收藏 -
Go 1.26 为 testing.T 增加 ArtifactDir:用它取得当前测试或子测试独立的产物目录,把失败现场写入其中;配合 -artifacts 和 -outputdir,本地与 CI 都能保留测试文件。196 收藏 -
解释 go test 的两种执行模式、(cached) 命中条件、count=1 对照方法和 go clean -testcache 的清理边界,帮助排查修改后结果不变。195 收藏 -
Golang · Go教程 | 3星期前 | Context · Go教程 · net/http · Go context.Context ErrHandlerTimeout http.TimeoutHandler HTTP 处理器超时
Go 标准库的 http.TimeoutHandler 可以为单个 HTTP 处理器设置时间边界,超时向客户端返回 503。本文说明最小包装方式、请求上下文取消、响应缓冲,以及它与 Server 超时配置和流式处理的边界。195 收藏 -
Go os.File.Chmod 用 FileMode 更新已有文件的权限位。本文从打开与创建的边界出发,说明 0o600、0o640 的写法、错误处理、修改后读取和 Unix、Windows 差异。195 收藏 -
切换 JSON v2 时,应按字段协议处理 string 标签,而不是只替换 import。本文对比数字、文本、布尔与集合的适用边界,给出最小 DTO 和旧接口渐进迁移建议。195 收藏 -
go/doc/comment.Parser 接收已经去除 // 或 /* */ 标记的文档注释文本,返回可遍历的 *comment.Doc。本文用一个小型源码分析场景说明如何读取段落、标题和链接,并按需要交给 Printer 输出。195 收藏 -
Go 流式响应一直到处理结束才到客户端,通常不是一个原因。本文拆开服务端 Flush、ResponseWriter 包装器和 HTTP 代理三层,给出可处理 Flush 错误的排查与实现方式。195 收藏 -
Go os.Stat 失败时不要只比较错误字符串:用 errors.Is 区分文件不存在与权限拒绝,再从 PathError 提取操作和路径信息,覆盖中间目录不可访问等排障边界。195 收藏 -
Go 32 位平台使用 64 位原子计数器时,普通 uint64 与 atomic.Uint64 的对齐责任不同。本文比较旧式原子函数、类型化原子对象和互斥锁的适用边界,给出结构体布局与兼容检查清单。195 收藏 -
比较Go database/sql结果集的自动关闭、defer和显式关闭,区分QueryContext、Scan、Err、Close的错误入口,用完整读取函数处理早退、迭代失败和关闭错误。195 收藏 -
Go crypto/mlkem 的 Decapsulate 对错误长度密文返回 error,但对长度正确、内容无效的密文不会报错,而是生成与发送方不同的共享密钥。本文按这两条语义说明长度检查、上层认证和错误处理边界。195 收藏