Go问答技术文章
-
Go go-colorful的RGB、Lab和CIEDE2000距离采用不同颜色空间与公式。本文演示同一对颜色的比较,说明0到1输入、结果缩放、最近色排序及阈值不能混用的原因。429 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · 数据校验 · 压缩 · Go问答 · Go compress/gzip io.ReadAll ErrChecksum gzip.Reader CRC-32
Go gzip.Reader 读取内容看似正常,却在末尾返回 ErrChecksum,通常不是解压过程突然失败,而是 Reader 读到 gzip 尾部后发现 CRC-32 或未压缩长度不一致。本文说明完整读取到 EOF 的正确处理方式,并区分截断、错误格式、写入端未 Close 和多成员流等常见原因。428 收藏 -
解释 Go Gock 的 Persist 为什么会影响后续测试,区分默认 mock、Times 次数限制与持久 mock,并给出 Off 和 RestoreClient 的测试隔离写法。428 收藏 -
Golang · Go问答 | 2天前 | 标准库 · 错误处理 · 文件读取 · Go问答 · 排错 · Go bufio.Scanner errors.Is errors.As ErrTooLong Scanner.Err 文本读取
bufio.Scanner 的 Scan 返回 false 不一定代表读取失败,io.EOF 会被 Err 隐藏为 nil。本文按 Reader、SplitFunc 和缓冲区三类来源拆分错误,并用 errors.Is、errors.As 识别哨兵错误、PathError 与 ErrTooLong。428 收藏 -
ScanComments 负责识别注释,SkipComments 决定识别后是否跳过。本文用一个小型 text/scanner 工具说明两者组合,并区分 go/scanner 的 API 边界。428 收藏 -
Go 的 text/template 报 function not defined 时,优先检查 FuncMap 是否在 Parse 前注册。本文用最小示例说明正确注册链、集中构造方式,以及解析后替换函数的边界。427 收藏 -
Go HTTP 客户端重试 POST 时,超时只说明客户端没有拿到结果,并不能证明服务端没有处理。本文从请求体、方法语义、幂等键和响应体关闭四个方面,给出一套可控的重试写法。427 收藏 -
Go TLS 客户端连接自签名服务失败时,通常不是把校验关闭,而是正确构造 RootCAs。本文说明如何保留系统根池、追加自签名 CA,并区分信任链与主机名错误。427 收藏 -
Go append 是否共享数组取决于追加后长度与原容量。通过固定容量示例定位覆盖位置,区分限制容量与复制元素存储,并明确切片接口的共享和修改约定。427 收藏 -
Go channel 缓冲区只能吸收暂时的速率差,不能提升消费者吞吐量。本文从到达速率、消费速率、发送阻塞和队列积压出发,说明如何选择一个小而有界的容量,并给出观察代码与决策表。427 收藏 -
Go 中声明但没有 make 的 channel 值是 nil,发送、接收和 range 都不会找到通信对象,因此会永久阻塞。本文对比 nil channel、空缓冲 channel 和已关闭 channel,给出初始化、nil 防护以及 context 超时的实用写法。427 收藏 -
Go TLS 客户端应把域名写入 DNS SAN、IP 写入 IP SAN,并让 tls.Config.ServerName 与真实身份对齐。本文说明 CommonName 的兼容边界、SNI 与主机名校验的关系,以及如何避免用 InsecureSkipVerify 绕过问题。427 收藏 -
Go regexp 允许多个捕获分组使用同一个名称,真正的编译错误通常来自命名语法、括号闭合、转义或不支持的 Perl 扩展。本文用最小模式、syntax.Error 和 SubexpIndex 拆开排查路径,并给出生产代码中的命名策略。426 收藏 -
以共享前缀声明为例,比较 Participle 有限前瞻与语法重写在 AST 兼容、字段归属和错误诊断上的取舍,区分真正歧义及左递归问题。426 收藏 -
Go 的 url.PathUnescape 遇到尾部百分号或非十六进制编码时会返回错误。本文用最小代码说明如何判断输入、区分路径和查询解码,并在进入业务逻辑前安全处理坏路径。426 收藏