Go教程技术文章
-
Go 1.23 引入的 slices.Collect 能把 iter.Seq 收集成新切片,但它和手写 append 解决的问题并不完全相同。本文用真实代码比较两条批量转换路径,说明可读性、容量控制、空序列和性能验证边界。455 收藏 -
Go 使用 csv.Reader.ReuseRecord 读取 CSV 时,直接保存 Read 返回的切片可能让上一行被后续数据覆盖。本文解释底层数组复用,并给出保存前复制的安全写法。455 收藏 -
strconv.ParseFloat 可以解析 1.25e3 这类科学计数法,但精度由 bitSize 决定。本文用 Go 示例说明 32/64 位舍入、NumError 分类、ErrRange 判断和后续存储的边界。455 收藏 -
url.ParseQuery 会把重复键保存为字符串切片;未编码分号会让对应片段无效,但有效参数仍可能保留。本文讲清读取方式、错误处理与 HTTP 接口边界。455 收藏 -
讲清 Go exec.CommandContext 如何在启动前替换 Cmd.Cancel,用协作式信号代替默认 Kill,并结合 WaitDelay、os.ErrProcessDone 与 ErrWaitDelay 处理退出边界。455 收藏 -
Golang · Go教程 | 3星期前 | 标准库 · go · slog · 日志排查 · 结构化日志 slog.Handler LogAttrs Go slog.GroupAttrs 空日志分组
Go slog.GroupAttrs 只负责构造组属性,符合契约的 Handler 会忽略没有有效属性的组。本文通过动态字段示例说明调用端条件追加、零 Attr 过滤与自定义 Handler 排查方法。455 收藏 -
用 Go 的 net/http/httputil.ReverseProxy 记录入站请求、改写后的出站请求、后端响应和代理错误,说明 DumpRequestOut、Rewrite、ModifyResponse 与 ErrorHandler 的职责边界。455 收藏 -
Go slog 不会自动把 context 中的任意值写成日志字段。本文按请求入口、logger.With、InfoContext 和 Handler 包装四个层次,给出补充 request_id 等上下文字段的安全写法与迁移检查清单。455 收藏 -
bufio.Scanner 返回 false 不一定代表文件读完了,长 token、SplitFunc 规则和 Err 检查都会改变结果。本文用可运行示例拆开这几个边界,并给出读取大行时的修复方式。454 收藏 -
Go 1.24 新增的 testing.T.Context 会在测试函数结束、Cleanup 执行前取消上下文。本文用一个可复现的子协程收尾场景,讲清取消时机、Cleanup 顺序、超时边界和回归核对方法。454 收藏 -
Go 动态解析 JSON 时,默认数字会进入 float64。使用 Decoder.UseNumber() 保留 json.Number,再按 Int64、math/big 或字符串边界转换,避免大整数静默丢失精度。454 收藏 -
Go io.TeeReader 可以在主流程单遍读取时,把同一批字节同步写给记录器或摘要计算器。本文解释无内部缓冲、写入错误转读错误和内存边界,并给出选择清单。454 收藏 -
Go 代码中的调试提示、进度信息或可选输出不一定都值得写入测试日志。把输出目标抽象为 io.Writer 后,测试可以注入 io.Discard 让输出静默,也可以换成 bytes.Buffer 做精确断言;本文说明两种方式的边界和错误处理。454 收藏 -
Go gzip.Reader 用 Reset 串行复用,但 Close 不会关闭底层文件,也不能代替读到 EOF;示例区分超限拒绝、尾部校验与逐文件清理。454 收藏 -
Go regexp.Regexp.AppendText 会把正则表达式文本追加到已有字节缓冲区,输出等同于 String,但不会记录 CompilePOSIX 或 Longest 等改变匹配语义的设置。本文说明缓冲区复用、返回值和可恢复配置的边界。454 收藏