Go语言技术文章
-
用 Go 标准库 httptrace.ClientTrace.GotConn 观察 HTTP 客户端请求拿到的连接,解释 Reused、WasIdle 与 IdleTime 的区别,并给出安全记录日志的最小写法和边界。311 收藏 -
Go GJSON 读取多个不同路径时,不需要为每个字段重复处理整段 JSON。本文用 Parse 和 Result.Get 复用一次解析结果,再说明数组投影、多路径对象、缺失字段与类型转换的边界。311 收藏 -
Go context.Value 适合传递跨 API 边界的轻量请求元数据,但不适合可选参数、必需业务参数、大型对象或可变状态。本文用包私有 key、类型安全读写函数和 HTTP 中间件示例说明其边界。311 收藏 -
Go map 的遍历顺序没有语言保证。本文用键收集、sort.Strings 和多字段比较器,把 map 数据转换成可复现的日志、接口和报表结果。311 收藏 -
Go database/sql.NamedArg 可以把业务参数名和值一起传给数据库接口,但 SQL 占位符语法和驱动支持仍需匹配。本文用查询、重复引用和排错示例说明命名参数的正确边界。311 收藏 -
Go reflect 中,IsValid 判断 Value 是否有效,IsZero 判断有效值是否为其类型的零值。本文用字段查找、nil 接口和指针示例说明两者的调用顺序与 panic 边界。311 收藏 -
Go 1.27 可通过 tls.Config.CurvePreferences 显式加入 tls.MLKEM1024;列表是支持集合,不能替代双方能力协商。311 收藏 -
从 GOTOOLCHAIN、go.mod/go.work 的 go 与 toolchain 行出发,解释 Go 工具链为何自动切换,以及 auto、path、local 和固定版本在开发、CI、离线环境中的差异。311 收藏 -
用 netip.ParseAddrPort 统一校验 host:port 输入,拆开 IPv4、IPv6 方括号、缺失端口和端口越界等边界,并给出可复用的 Go 代码。310 收藏 -
Go 的 parser.SkipObjectResolution 会跳过已经过时的语法级对象解析,减少解析阶段的 CPU 和内存开销。本文用 ParseFile、ast.File 和 go/types 的最小示例说明它保留什么、舍弃什么,以及何时必须补上类型检查。310 收藏 -
Go 的 log/slog 可以把日志级别集中交给 HandlerOptions 管理,再用 LevelVar 在运行时切换,而 ReplaceAttr 适合统一字段格式。本文用一条可运行的配置链说明三者的职责边界、切换时机与验收方法。310 收藏 -
Go 示例测试可以同时承担文档和回归用例职责:用 Example 命名关联文档对象,用 Output 注释固定标准输出,必要时用 Unordered output 放宽顺序,再把示例纳入 go test ./...。310 收藏 -
Golang · Go教程 | 1个月前 | 流式处理 · Go教程 · CloseWithError Go io.Pipe Go 流式上传 json Encoder 请求体 NewRequestWithContext
用 Go io.Pipe 把编码器输出直接连接到 HTTP 请求体,讲清并行启动、EOF、CloseWithError、context 取消和上传重试边界。310 收藏 -
讲清 Go 泛型切片转换中 nil 与空切片的差异,使用 S ~[]E 保留命名切片类型,并给出类型推断与复制边界的实用写法。310 收藏 -
Go 处理 IPv6 地址和端口时,冒号会让普通 host:port 拼接失去边界。本文从裸 IPv6、重复方括号、net.JoinHostPort、net.SplitHostPort 和 zone 标识几个角度,给出定位解析失败与统一拼接的实用方法。310 收藏