Go语言技术文章
-
Go 1.27 改变了 Darwin 与 Windows 上 x509.SystemCertPool 对 SSL_CERT_FILE、SSL_CERT_DIR 的处理。本文按证书来源、TLS 配置、GODEBUG 回退和跨平台回归四个边界,说明旧项目该怎么排查。405 收藏 -
Go 1.26 为 runtime/metrics 增加了更细的调度指标。本文用一段紧凑的采样代码区分 runnable、waiting、running、GOMAXPROCS、运行时线程数与创建总量,说明哪些组合能提示排队或阻塞,哪些结论不能只靠一个数字得出。405 收藏 -
Go 反射里 CanSet 为 false,通常不是 Set 本身的问题,而是 Value 不可寻址、来自未导出字段或少做了一次 Elem。本文用最小示例和诊断清单定位三类来源。405 收藏 -
Go 处理 URL 参数中的无填充 base64 时,关键是按字母表和填充约定选择 RawURLEncoding,而不是把所有输入都交给 StdEncoding。本文给出判断表、解码代码和兼容排错方法。405 收藏 -
Golang · Go问答 | 3星期前 | golang · 路由 · net/http · Go问答 · ServeMux · net/http 通配符 路径参数 ServeMux Go问答 Go 1.22 PathValue
Go 1.22 为 net/http.ServeMux 增加了方法模式、命名通配符和 Request.PathValue。本文用订单详情路由拆解单段参数、末尾多段参数、方法匹配、URL 解码和旧版 Go 兼容边界。404 收藏 -
Go 的 base64 解码遇到截断或非法字符时,会返回部分结果和 CorruptInputError。本文用 DecodeString、Decode 和 RawStdEncoding 对比补位、换行与错误位置的判断方式。404 收藏 -
Go runtime/metrics 读不到自定义名称时,先检查 runtime.Version() 和 metrics.All(),确认完整指标名、单位与版本支持集合,再把业务自定义指标交给独立采集层。404 收藏 -
Go 的 json.Unmarshal 复用结构体时,JSON 缺失字段不会自动清零,旧指针可能因此残留。本文用最小示例区分缺失、null 与对象合并,并给出安全处理方式。404 收藏 -
同一个 Go 服务进程也能按租户切出 CPU 采样上下文。本文用 pprof.Do 和 pprof.Labels 说明标签写入、goroutine 继承、同名覆盖及高基数边界。404 收藏 -
slog.LogValuer 可以把复杂对象转换成结构化日志值,但如果直接把令牌、邮箱或请求头塞进 Attr,日志脱敏就会失效。本文从 LogValue 的降级边界出发,演示组字段、零值和审计检查如何组合,避免调试信息变成敏感数据出口。403 收藏 -
io.Pipe 没有内部缓冲,它用同步的 PipeReader 和 PipeWriter 把生产者与消费者接起来。本文用一个流式导出示例说明 Write 为什么会阻塞、CloseWithError 如何传递失败,以及怎样避免 goroutine 泄漏。403 收藏 -
Go 的 time.LoadLocation 在精简容器中报 unknown time zone,通常是运行环境缺少 IANA 时区数据。本文按查找顺序、镜像补齐、time/tzdata 嵌入和 ParseInLocation 验证给出处理方案。403 收藏 -
用 io/fs.FS 统一 Go 的 embed.FS 与 os.DirFS,解释 fs.ValidPath 的路径规则、发布目录边界和开发环境切换方式。403 收藏 -
Go 反射中,Value.Elem 遇到 nil 指针会返回 zero Value。先用 IsValid 判断,再对可空 Kind 调用 IsNil,并在每次 Elem 后保留成功标志,就能避免继续访问无效 Value。403 收藏 -
Go bytes.Reader.ReadAt 用显式偏移读取数据而不改变当前位置,适合读取文件头、索引和多个独立区间。本文说明它与 Read、Seek 的边界、n 与 io.EOF 的判断方式,以及只读并发使用时的注意事项。403 收藏