Go语言技术文章
-
Golang · Go教程 | 1个月前 | 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 math/big.Int.SetBytes 的大端无符号语义,结合高位字节、负数编码与字节序转换示例,给出解析二进制整数时的检查边界。455 收藏 -
Go fuzz 测试发现失败输入后,会把最小化样例写入 testdata/fuzz/FuzzXxx。保留这个 corpus 文件,再用 go test -run 复现并纳入版本库,就能把随机发现的问题变成稳定回归用例。455 收藏 -
Golang · Go教程 | 1个月前 | golang · 配置 · 设计模式 · go · client · api设计 · Go 构造函数 Functional Options 函数选项 Client 配置 API 兼容
Functional Options 适合“少量必填参数稳定、可选项会逐步增加”的 Go Client 构造场景。它能避免频繁改函数签名,并让调用点保留 WithTimeout、WithRetry 这类具名配置;但配置总是成组出现、需要从文件反序列化,或只有一个可选值时,Config 结构体或新增构造函数往往更直接。关键不在模式名称,而在默认值、重复选项与兼容边界是否明确。454 收藏 -
Go 1.24 引入 runtime.AddCleanup 后,资源清理不必再把所有希望寄托在 SetFinalizer 上。本文从一个文件句柄包装器切入,解释 Cleanup.Stop、runtime.KeepAlive、回收时机和显式 Close 的边界,并给出可回归的迁移检查。454 收藏 -
bufio.Scanner 返回 false 不一定代表文件读完了,长 token、SplitFunc 规则和 Err 检查都会改变结果。本文用可运行示例拆开这几个边界,并给出读取大行时的修复方式。454 收藏 -
Go 1.24 新增的 testing.T.Context 会在测试函数结束、Cleanup 执行前取消上下文。本文用一个可复现的子协程收尾场景,讲清取消时机、Cleanup 顺序、超时边界和回归核对方法。454 收藏 -
Go 泛型约束同时要求 comparable 和方法时,值类型不一定拥有指针接收者方法。本文用最小代码拆开方法集、类型约束与三种修复路径,帮助你判断该传值还是传指针。454 收藏 -
Go 1.20 之后接口类型可以满足 comparable 约束,但接口值仍可能因动态值不可比较而 panic。本文用类型集合、严格可比较和泛型调用示例拆清这个边界。454 收藏 -
context.WithValue 取不到键时不要直接强制断言。本文用私有 key、类型安全访问器和默认值策略,区分值缺失、显式 nil 与类型不匹配,避免 panic。454 收藏 -
用 Go 标准库的一次性初始化函数封装懒加载配置,验证成功值、初始化错误与 panic 缓存语义,避免并发请求重复初始化。453 收藏 -
围绕 Go 读取大文件时的内存峰值,拆解 os.ReadFile 的一次性分配、bufio.Reader 的流式边界、缓冲区大小选择和失败恢复检查。453 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · 签名 · Go教程 · 密码学 · 接口兼容 · Go Go 1.25 crypto.MessageSigner SignMessage 签名器
Go 1.25 在 crypto 包中增加 MessageSigner 接口与 SignMessage 函数,用于兼容由签名器自行哈希消息和传统 Sign 方法。本文通过真实回退路径说明接口判断、哈希边界与错误处理。453 收藏 -
用一个有界任务队列拆开 Go sync.Cond 的等待谓词、Signal 与 Broadcast 边界,说明锁顺序、虚假唤醒式重检和多消费者通知如何验证。453 收藏