Go语言技术文章
-
Go 客户端响应体读不到,通常不是一个原因:可能请求本身失败、Body 已经被消费、响应按协议没有内容,或读取过程中发生了错误。本文用 net/http 的真实返回关系拆开排查,并给出文本与 JSON 都能复用的读取写法。117 收藏 -
Go AddDate会对不存在的目标日期进行归一化,而非自动截到月末。本文比较日历偏移、月末截断与固定时长,给出CivilDate实现,并说明账期锚点、闰年和时区边界。348 收藏 -
从时区形态、layout 占位符、Parse 与 ParseInLocation 的区别入手,定位 Go 时间字符串解析失败,并给出稳定的选择规则。208 收藏 -
Go encoding/json 默认会忽略结构体中没有对应字段的 JSON key。本文说明 Decoder 的未知字段边界、结构体匹配规则,以及如何用 DisallowUnknownFields 显式启用严格解析。394 收藏 -
Go 的 JSON 数字进入 interface{} 后默认会解码为 float64。本文解释原因,并用结构体、Decoder.UseNumber 和 json.Number 给出固定字段与动态字段的处理方案。150 收藏 -
Go 交叉编译时,纯 Go 项目可以通过 CGO_ENABLED=0 关闭 cgo,再用 GOOS 和 GOARCH 选择目标平台。本文从构建命令、go env 检查、cgo 构建约束和纯 Go 替代实现四个方面说明可执行做法与依赖边界。487 收藏 -
go env -w 会把 Go 环境变量的默认值写入每用户配置文件,适合持久化 GOPROXY、GOFLAGS 等工具链设置。本文比较它与 export、命令行参数和项目配置的边界,并给出读取、撤销和协作场景的选择方法。130 收藏 -
Go私有模块可通过GONOSUMDB按路径设置校验数据库例外。本文比较仓库直连与企业代理方案,说明GOPRIVATE继承、GONOPROXY覆盖、go.sum和访问权限的边界。184 收藏 -
Go work 用 go.work 把多个独立 Go module 放进同一 workspace,让本地联调可以直接读取模块改动。本文按迁移变更单的方式说明目录、use、模式切换、测试与交付边界。245 收藏 -
Go mod why 展示的是从主模块到目标包的最短包级引入路径。本文结合实际排查依赖的经历,说明普通查询、-m、-vendor 与 go mod graph 的区别,以及出现未引用提示时怎样判断。394 收藏 -
Go 中修改已有 URL 时,不要直接拼接查询字符串。本文用 net/url 解析 URL,通过 Query、Set、Del 和 Encode 只更新 RawQuery,同时保留路径、主机和片段。274 收藏 -
用 Go execution trace 采集短窗口运行时事件,结合 go tool trace 观察 goroutine 调度、阻塞、系统调用与 GC,并明确它和 pprof 的分工。351 收藏 -
Go pprof 定位 CPU 热点函数的关键,是先采集能代表真实负载的 CPU profile,再用 go tool pprof 对比 flat、cum、list 和调用关系,最后回到源码行复采确认。321 收藏 -
Go benchmark 会把计时从 benchmark 开始处算起,初始化放错位置就会污染 ns/op。本文用 ResetTimer、StopTimer/StartTimer 和 benchmem 说明怎样只测目标操作。266 收藏 -
bytes.Buffer 的 Reset 会清空当前长度,但会保留底层存储。本文用 Len、Cap 和阈值策略说明如何复用正常大小的缓冲区,并隔离偶发的大容量缓冲区,避免复用池长期持有异常对象。235 收藏