Go语言技术文章
-
Golang · Go问答 | 1天前 | 单元测试 · Cookie · Go问答 · 兼容性 · cookie Go net/http/cookiejar Options.PublicSuffixList 内网测试域名
Go cookiejar 遇到 api.dev.test、web.dev.test 这类内网测试域名时,可以注入只服务于测试的 PublicSuffixList。本文解释它对 Domain Cookie 的影响、如何实现并发安全的测试替身,以及为什么不能把 nil 配置带到生产环境。406 收藏 -
SJSON 的 SetRaw 需要一个非空路径,空路径会返回 path cannot be empty,因此它不适合直接替换完整根 JSON。本文区分根文档替换、根对象字段写入和嵌套字段更新,并给出 SetRawBytes 的选择方式。405 收藏 -
io/fs 使用统一斜杠路径,而本地文件系统使用操作系统分隔符。本文用 filepath.Localize 完成转换,说明 ValidPath 前置条件、Windows 兼容错误与文件操作边界。405 收藏 -
Go bytes.CutPrefix 用 after 和 found 同时表达去掉固定前缀后的切片与是否命中。本文说明未命中、空前缀、底层数组共享及旧版本兼容边界。405 收藏 -
Go DNS 解析在本机正常、容器里失败,通常不是 Go 随机改变了结果,而是两侧的 resolv.conf、hosts、网络命名空间或解析器路径不同。本文给出一套从输入配置到 net.Resolver 的排查与修复路线。405 收藏 -
Go 1.25 的 CrossOriginProtection 可以拦截跨源写请求。本文说明如何用 SetDenyHandler 统一返回 JSON 拒绝响应,并厘清安全方法、Origin、Sec-Fetch-Site 与日志边界。405 收藏 -
gopacket 的 ErrorLayer 不是“截断”这个单一状态,而是解码链在某个位置失败后的错误层。本文区分 CaptureInfo 长度、Metadata().Truncated、协议长度字段和未知解码器,给出一套可落地的排查写法。405 收藏 -
解释 io.Pipe 读取端提前关闭时写入返回 ErrClosedPipe 的原因,对比两端 CloseWithError 的传递方向,并通过原创建例说明部分写入、错误识别和生产者收尾。405 收藏 -
Go encoding/base32 默认会生成带等号的 Base32 字符串,WithPadding(base32.NoPadding) 则关闭填充。本文解释两种格式的差异,给出带等号、无填充和混合历史数据的解码写法,并说明如何用统一编码策略完成迁移。405 收藏 -
用 Go io.ReadFull 读取固定长度协议帧,区分正常 EOF、半包 ErrUnexpectedEOF 与底层 I/O 错误,并给出长度校验和循环读取示例。405 收藏 -
Go runtime/metrics 的直方图判断应看 Description.Kind,而不是猜测指标名称。本文说明如何从 All 建立描述符索引,安全读取 KindFloat64Histogram,并正确理解 Buckets 与 Counts 的关系。404 收藏 -
Go x/text/encoding/charmap 的 EncodeRune 接收一个 rune,返回目标单字节编码中的 byte 和一个 bool。本文说明如何用 ok 判断字符能否编码,如何定位整段文本中的不可表示字符,以及何时改用 NewEncoder 或 UTF-8。404 收藏 -
transform.Chain 只负责按顺序组合转换器,不会自动扩展调用方提供的 dst。本文用 x/text/runes 和 transform 的例子说明 ErrShortDst、nDst、nSrc 的正确处理,以及 transform.Writer 在 Close 时刷新尾部数据的原因。404 收藏 -
Gonum optimize 的 initX 会改变搜索起点和后续路径。本文用双谷目标函数说明局部解差异的来源,并给出多起点、尺度检查和结果复查方法。404 收藏 -
解释 Go time.Ticker 停止后为什么不能自动清理消费 goroutine,并给出用 context.Done 协作退出、用 defer Stop 收尾 ticker 的实用写法。404 收藏