Go语言技术文章
-
Go ast.Inspect 不负责关闭文件或清理节点缓存。本文用短作用域计数示例说明资源所有权,区分 AST 引用保留与文件句柄问题,并解释回调返回 false、收到 nil 的真实含义。365 收藏 -
Go mime/multipart.Reader 读取不到字段或文件时,先检查 Content-Type 中的 boundary 和请求体是否已被消费,再选择 NextPart 或 ReadForm。本文用一个最小 HTTP 示例说明流式读取、io.EOF、部件消费和模式混用的排查方法。365 收藏 -
用 Go httptrace 拆分 DNS、TCP/TLS、连接复用、写请求和首字节耗时,配合完整示例定位 HTTP 客户端慢在解析、建连还是服务端等待。364 收藏 -
Go http.Server 的 MaxHeaderBytes 只限制解析请求行和请求头的读取范围,不限制请求体。本文从自定义 Server 是否生效、前置代理边界和 MaxBytesReader 三个层面说明为什么看起来仍能收到大请求。364 收藏 -
Go 的 image/color.RGBA64 用四个 uint16 表示每通道 16 位的 alpha 预乘颜色。本文从常见的通道值困惑出发,说明字段创建、Color.RGBA 转换、取值范围和 RGBA64 与 NRGBA64 的选择边界。364 收藏 -
Go IPv6 优先连接等待需区分 DNS、双栈回退和请求后续阶段。通过 httptrace 记录连接事件,理解 FallbackDelay 与总拨号预算,并避免把强制 tcp4 当永久修复。364 收藏 -
Go encoding/csv 的 Reader.FieldPos 可以把最近一次 Read 返回的字段映射回原始 CSV 的行列位置。本文用多行引号字段说明调用时机、1-based 坐标、字节列号和常见误区。364 收藏 -
Windows-1252 旧文件不能直接当作 UTF-8 读取。本文用 golang.org/x/text/encoding/charmap 的 Decoder 说明内存转换、流式读取和写回旧编码时的字符边界。364 收藏 -
ants 池满时,WithMaxBlockingTasks 可以限制等待空闲工作协程的 Submit 调用数量;超过上限会返回 ErrPoolOverload。本文说明它与池容量、WithNonblocking、监控指标和回滚策略的区别。364 收藏 -
使用 go-flags 的 Completer 接口为自定义命令行值返回前缀匹配候选,解释 Completion 的字段、指针接收者、choice 标签与空前缀处理。364 收藏 -
用 Go unique.Make 将可比较字符串规范化为 unique.Handle,解释句柄比较、Value 取值、并发安全和不适用场景。364 收藏 -
Go hash.Hash.Sum 会把当前摘要追加到传入切片末尾,不会覆盖已有前缀,也不会改变哈希状态。本文说明 dst、len、cap 与 Size 的关系,并给出安全的摘要追加写法。364 收藏 -
说明 Go base64.AppendDecode 部分结果与错误并存时,怎样区分新增区、恢复原长度、记录输入位置,并选择完整输入重试或流式接口。364 收藏 -
Go 导出 UTF-16 CSV 时,应该让 csv.Writer 先生成 UTF-8 CSV 字节,再把它交给 transform.Writer 转成指定端序的 UTF-16。本文用一条可复用的写入链说明 UseBOM、UseCRLF、Flush、Error 和 Close 的顺序。364 收藏 -
GopherLua 的 CallByParam 通过 Protect 在 PCall 与 Call 之间选择:保护调用把脚本运行错误变成 error,普通调用则让错误 panic。本文对照 Fn、NRet、Handler 和异常边界,说明两种写法该怎样选。363 收藏