Go语言技术文章
-
为 Go 接口时间建立独立 JSON 适配类型,给出 UTC 整秒字符串的双向编码完整示例,明确 null、空字符串、精度检查和错误处理,并说明字段缺失与方法递归的常见问题。348 收藏 -
Go JSON 解码到 interface{} 时数字默认会变成 float64。本文比较明确目标类型、UseNumber 和展示型字符串三种选择,帮助你避免大整数精度丢失。477 收藏 -
Go map 的遍历顺序没有语言保证。本文用键收集、sort.Strings 和多字段比较器,把 map 数据转换成可复现的日志、接口和报表结果。311 收藏 -
Go 使用 encoding/json 时字段为空,通常要按导出字段、struct tag 拼写和 Unmarshal 目标指针三个方向排查。本文用最小示例说明每种现象的原因与修复方式。206 收藏 -
通过容量与新增元素数量判断 Go append 是否复用底层数组,结合切片别名、元素地址和限容示例区分长度变化、共享写入与重新分配,并说明显式复制和函数返回值的使用边界。462 收藏 -
Go range 遍历结构体切片时,第二个变量通常是当前元素的值拷贝,修改它不会写回原切片。本文用最小示例说明原因,并给出按索引写回、只读值变量和指针切片三种选择。154 收藏 -
reflect.TypeOf 读取的是接口值的动态类型。传入真正的 nil 接口时没有动态类型,因此返回 nil;本文结合 typed nil、TypeFor 和 ValueOf 说明反射代码的安全判断方式。305 收藏 -
Go Modules 项目中的 go.sum 应与 go.mod 一起纳入版本控制。本文从校验记录、模块代理、私有依赖和 CI 只读构建四个角度,说明怎样生成、评审和提交 go.sum。160 收藏 -
使用 Go mod graph 精确筛选目标模块的全部父依赖,并结合 go list -m 与 go mod why 区分版本要求、实际选中版本和包导入路径,说明依赖调整前后的记录方法与升级判断边界。142 收藏 -
用 go test -cover 建立按包基线,再用 coverprofile 与 go tool cover 定位函数盲区,并区分默认包内统计和 -coverpkg 跨包统计。262 收藏 -
测试依赖用户主目录的 Go 代码时,先按平台选择 HOME 或 USERPROFILE,再用 t.TempDir 与 t.Setenv 注入临时路径,并覆盖空值错误分支。本文给出可复用的断言结构和 Cleanup 边界。231 收藏 -
Go -race 只能发现运行时真正触发的竞态,而且典型开销明显高于普通测试。本文把 CI 拆成快速层、并发重点层、全量竞态层和长链路层,说明如何配置 -p、-parallel、GOMAXPROCS,并区分真实竞态与资源型失败。393 收藏 -
Go 中 filepath 面向当前操作系统的本地文件路径,path 面向固定使用斜杠的 URL 路径。本文用同一组输入对比两者的职责、Windows 盘符风险、资源地址拼接和跨平台落地方式。115 收藏 -
Go json.Decoder 可能提前从底层 Reader 读取数据,Decode 返回后仍有一部分字节停留在内部缓冲。本文说明 Buffered 的准确边界、如何和底层 Reader 余量拼接,以及为什么下一次 Decode 或 Token 后不能继续依赖旧 reader。484 收藏 -
Go io.Pipe 是没有内部缓冲的同步内存管道:PipeWriter.Write 会等到 PipeReader 消费数据后才完成。本文从生产者消费者串流出发,说明正常关闭、CloseWithError、读端取消与背压边界。228 收藏