Go语言技术文章
-
用 bufio.Reader 按换行分块读取大文件,解释 ReadString、ReadBytes、ReadLine 的边界,处理跨缓冲区换行、末尾无换行和超长行。104 收藏 -
Go YAML 配置转 JSON 后出现数字或布尔类型差异,通常来自 YAML 解码目标与 JSON 再解码到 any 的默认映射。本文用最小复现定位变化层,并给出结构体、UseNumber 与 RawMessage 的修正方式。104 收藏 -
Go width.Fold 可将文本映射到规范宽度,但不等于全部转半角。本文给出字符串处理函数,比较 Fold、Narrow、Widen,并说明原文保留、查询一致和迁移冲突。104 收藏 -
Go bytes.Clone 适合在多个处理阶段需要独立修改 []byte 时隔离底层数组别名。本文从切片共享、nil 与空切片、长度容量以及浅层复制边界出发,给出可直接复用的工程写法。104 收藏 -
Go flag.FlagSet.Visit 只遍历 Parse 后被用户显式设置的参数,适合记录命令行覆盖项;VisitAll 用于完整参数表,Lookup 用于单项查询。本文用配置覆盖和诊断日志场景说明三者边界。104 收藏 -
Go strconv.ParseInt 通过 base 指定进制、通过 bitSize 约束目标宽度,并返回 int64 与 error。本文说明固定进制和 base=0 自动识别的差异,拆解符号、前缀、非法数字、位宽溢出和 NumError 的处理边界。104 收藏 -
解释 Lumberjack 多进程共用轮转文件时实例锁、句柄和归档管理无法协调的原因,给出独占目录初始化示例,并说明多副本命名、迁移与目录容量管理。104 收藏 -
Go 1.27 的可移植 simd 包在 CPU 不支持 SIMD 时会使用纯 Go 仿真实现;部分能力不足时默认降到可用向量宽度或仿真,但强制宽度可能触发 panic。103 收藏 -
下游接口少量请求只是变慢而没有失败时,可以用 Go 的 net/http 与 context 为幂等读取请求增加受控副本:设置对冲延迟、共享总截止时间,首个成功后取消其余副本,同时限制额外流量。103 收藏 -
使用 afero.NewReadOnlyFs 把可写的 afero.Fs 包装成只读视图,明确读取、Stat、已存在目录与创建删除重命名等修改操作的边界,并给出可回滚的注入方式。103 收藏 -
huh 表单结束后变量仍是旧值,通常是 Value 绑定了副本、变量被遮蔽,或 Run 没有完成。本文给出指针绑定、状态判断和 Key 读取的排查方法。103 收藏 -
Go toolchain 自动下载失败时,可以根据项目是否允许升级,选择 GOTOOLCHAIN=local 或 go1.x.y+path 固定本地工具链,并检查 go.mod、go.work 与 PATH 中的版本关系。103 收藏 -
使用 Go sync.OnceValue 缓存一次计算值,排查重复创建 getter、初始化阻塞与可变返回值共享问题,并说明 panic、零值和缓存生命周期的注意点。103 收藏 -
Go 的 nil map 可以读取、遍历和删除,但不能写入。本文用缓存索引示例说明 make 初始化、惰性初始化、双值读取和回归检查,避免 assignment to entry in nil map。103 收藏 -
围绕 ResponseWriter 包装导致的 http.Flusher 断言失败,说明安全断言、Unwrap 透传和 ResponseController 兜底的兼容写法。103 收藏