Go教程技术文章
-
encoding/hex.AppendEncode 适合把字节编码结果追加到已有缓冲区。本文用 EncodedLen 判断容量,拆开 dst[:0] 复用、尾部追加和切片边界,避免预留不足或误把编码结果当原始字节。456 收藏 -
用 io.Pipe 把 Go 的数据生成器直接接到 HTTP 请求体,边编码边上传,不落地临时文件,并正确处理关闭、取消和错误传递。456 收藏 -
同一仓库维护多个 Go 模块时,可以用 go.work 的 use 指令共享本地开发版本。本文说明如何初始化工作区、验证本地解析、区分 go.work 与 replace,并让 CI 用 GOWORK=off 回到独立模块测试。456 收藏 -
用 Go multipart.Reader 按字段名设置上传上限,借助 limit+1 字节检测超量,并清理临时文件与请求级资源。456 收藏 -
Golang · Go教程 | 2个月前 | golang · HTTP · go · 服务端 · http.server MaxBytesReader ReadHeaderTimeout Go HTTP 服务 请求体限制 响应头限制
Go 的 http.Server 默认足够启动一个接口,却不会替业务限定大请求体、慢请求头和响应写入时间。本文用上传接口的真实边界,拆解 MaxBytesReader、ReadHeaderTimeout、WriteTimeout 与 MaxHeaderBytes 的职责,并给出可复查的生产配置。455 收藏 -
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教程 | 2个月前 | golang · 配置 · 设计模式 · go · client · api设计 · Go 构造函数 Functional Options 函数选项 Client 配置 API 兼容
Functional Options 适合“少量必填参数稳定、可选项会逐步增加”的 Go Client 构造场景。它能避免频繁改函数签名,并让调用点保留 WithTimeout、WithRetry 这类具名配置;但配置总是成组出现、需要从文件反序列化,或只有一个可选值时,Config 结构体或新增构造函数往往更直接。关键不在模式名称,而在默认值、重复选项与兼容边界是否明确。454 收藏 -
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 标准库的一次性初始化函数封装懒加载配置,验证成功值、初始化错误与 panic 缓存语义,避免并发请求重复初始化。453 收藏