Go语言技术文章
-
用 Go log/slog 在请求入口统一绑定 trace_id、request_id 和路由字段,再通过 context 传到业务函数,保持 JSON 日志可检索并避开敏感数据泄露。322 收藏 -
Go compress/gzip 默认会把连续 gzip 成员合并读取,第一次 io.EOF 不一定代表单个成员结束。本文用 Multistream(false)、Reset 和 bufio.Reader 区分成员边界、正常尾部与损坏数据。322 收藏 -
Go 1.24 为 encoding/json 增加 omitzero。本文用 time.Time、自定义 IsZero、指针和切片示例,拆清它与 omitempty 的判断边界,并给出兼容迁移和测试清单。321 收藏 -
并发任务一旦失败,普通取消信号往往只告诉调用方“停了”,却丢掉了真正原因。本文用 context.WithCancelCause 组织一个批量读取示例,让首个失败原因沿 ctx.Done 传回协调函数,并验证取消、错误回收和结果输出的边界。321 收藏 -
用 Go 的 container/list 和 map 实现固定容量 LRU 缓存,覆盖命中更新、覆盖旧值、超限淘汰、容量边界和并发使用注意事项。321 收藏 -
Go 将 JSON 解码到 any 时会默认使用 float64,大整数超过双精度可精确表示范围后可能被改写。本文用复现、UseNumber 和明确整数类型说明如何保留精度。321 收藏 -
Go generate 的关键不是把命令写得更长,而是把指令放进正确的源码包,让相对路径、生成器和输出文件拥有稳定的目录关系。321 收藏 -
Golang · Go教程 | 2星期前 | 配置 · go · TLS · 网络安全 · TLS 1.3 Go crypto/tls最低TLS版本 tls.Config.MinVersion TLS 1.2 Go TLS配置 ConnectionState Version
围绕 Go crypto/tls 的 tls.Config.MinVersion,说明 TLS 1.2 与 TLS 1.3 的最低版本选择、客户端 Transport 和服务端连接绑定方式,以及用 ConnectionState 核对协商结果的迁移边界。321 收藏 -
Go 1.27 为 tls.QUICConfig 增加 ClientHelloInfoConn,用于指定 ClientHelloInfo.Conn 暴露的 net.Conn。本文从 QUIC 证书选择和配置回调场景讲清赋值位置、可读取的连接元数据、禁止读写的边界与兼容做法。320 收藏 -
Go 里 Stat 会关注符号链接指向的目标,Lstat 则保留链接自身的信息。本文用 FileInfo、ModeSymlink、断链和 Readlink 示例说明如何选择。320 收藏 -
讲清 Go time.ParseInLocation 在夏令时重复本地时间中的边界:固定 IANA 时区,保存 Zone、offset、IsDST、原始文本和 UTC 瞬间,避免把两次出现的本地时间误当成同一条记录。320 收藏 -
Go errors.Join 会丢弃传入的 nil 错误;如果所有参数都是 nil 则返回 nil,否则返回只包含非 nil 成员的组合错误。本文用边界输入说明如何判断和检查成员。320 收藏 -
Go context发生取消时,ctx.Err()只能告诉你状态,context.Cause(ctx)才能保留首次取消的具体原因。本文用WithCancelCause和超时cause建立一套可排查的错误归因方法。320 收藏 -
flate.NewReaderDict 只初始化解压状态,不会在构造时读取并验证完整数据;字典不一致通常到 Read 或 io.Copy 展开回溯引用时才暴露,而且可能表现为 corrupt input,也可能静默产出错误字节。本文给出诊断与协议修复方法。320 收藏 -
Go database/sql 通过 Rows.ColumnTypes 读取查询结果的列名、数据库类型、长度、精度、可空性和建议扫描类型,并说明驱动不支持与 SQL NULL 的处理边界。319 收藏