Go语言技术文章
-
Go json.Decoder 默认忽略结构体未知字段,适合灰度客户端向前兼容;本文用示例说明类型错误、DisallowUnknownFields 严格入口和分阶段收紧清单。372 收藏 -
Go 字符串按字节截断后出现替换符,通常是切进了 UTF-8 多字节序列。本文解释 U+FFFD 的来源,并分别给出安全字节截断、rune 截断和更高层字符边界的判断方法。372 收藏 -
讲清 Go sync.Pool 对象归还前如何清理字节切片、map 和引用字段,避免敏感内容被下一次 Get 读到,并说明清零与安全擦除的边界。372 收藏 -
Go 的 zip.File.OpenRaw 返回 ZIP 条目未经解压的压缩字节流。本文给出流式读取、长度核对、Store 与 Deflate 区别,并比较 Open、Writer.Copy 和 DataOffset 的选择边界。372 收藏 -
短任务已经返回并不代表 goroutine 已退出。本文用 goroutineleak 和 pprof 拆解结果发送、提前返回、取消与排空之间的生命周期关系,给出可落地的修复清单。372 收藏 -
用 Go crypto/rand 生成固定长度的密码学随机字节,编码为 URL 安全令牌,并说明 rand.Read 与自定义 Reader 的错误处理差异。371 收藏 -
围绕 Go encoding/gob 长连接复用场景,说明连接级 Encoder 与 Decoder 的正确用法、并发写入限制、错误恢复和必须重新创建编解码器的边界。371 收藏 -
Go select 中 default 被选中通常不是分支抢先,而是其他通信 case 当下都无法立即完成。本文按 nil 通道、缓冲状态、发送接收配对和循环忙轮询逐层排查,并给出可落地的修正方式。370 收藏 -
围绕 go mod why 常见报错,区分包路径与模块路径,确认主模块位置,并结合 go list、go mod graph 和 replace 配置定位依赖引入原因。370 收藏 -
讲清 Go regexp.ReplaceAllStringFunc 的回调输入边界,演示如何隔离计数和去重状态,并处理并发调用、捕获组与 API 选择,避免结果串线和数据竞争。370 收藏 -
通过 Number 约束和 []T 值参数,让 Go 泛型调用从 Sum[Cents](amounts) 简化为 Sum(amounts),并说明不能推断时应保留显式类型参数的边界。370 收藏 -
用 fstest.MapFS 为依赖 fs.FS 的 Go 组件构造内存文件树,覆盖成功、文件缺失、坏数据、子目录和路径边界。370 收藏 -
Go 的 URL.RawPath 只是 Path 的可选编码提示。只有编码形式有效且反转义后与 Path 完全一致,EscapedPath 才会采用它;否则会忽略 RawPath,并从 Path 重新生成转义结果。370 收藏 -
Go 1.23 的 maps.Insert 可以把 iter.Seq2 产生的键值对直接写入已有 map。本文用 slices.All、maps.All 和自定义序列说明最小写法、覆盖规则、nil map 限制,并对比 Insert、Collect 与 Copy。370 收藏 -
Go 的 http.ServeContent 能基于可寻址内容自动处理 Range、Last-Modified 与条件请求。本文用完整文件端点讲清 ETag 设置、206/304 响应及大文件边界。370 收藏