Go语言技术文章
-
PATH 是多个路径组成的列表,不能用 filepath.Split 当作单一路径处理。本文对比 ListSeparator 与 Separator,说明 Go 中如何跨平台拆分 PATH,以及空输入、清理和绝对化的边界。143 收藏 -
encoding/json/v2 默认忽略未知 JSON 成员,严格接口可用 RejectUnknownMembers 定位错误,需要透传时可用 embed fallback 保留扩展字段。本文按旧客户端、新客户端、严格命令和网关转发四类场景给出兼容策略与回归清单。141 收藏 -
Go 的 gzip.Reader 默认会连续读取拼接的 gzip 成员。本文用原创示例拆开 Multistream、Reset、io.ByteReader、EOF 与尾随数据的边界,帮助你选择整体解压或按成员处理。140 收藏 -
Go 的 exec.CommandContext 默认会在上下文超时后调用 Cmd.Cancel 并 Kill 子进程,但生产任务常需要更温和、可观测的退出策略。本文说明如何设计自定义 Cancel,处理 os.ErrProcessDone、WaitDelay、管道收尾和错误归因。137 收藏 -
Go 的 gzip 压缩级别是在 CPU 消耗、响应体大小和端到端延迟之间做取舍。本文用 NewWriterLevel 比较级别,并给出 HTTP Handler 中的配置、Close、Flush 与 Writer 复用注意事项。136 收藏 -
Golang · Go教程 | 2天前 | 缓存 · HTTP · go · Go net/http 静态文件 Cache-Control ETag If-Modified-Since ServeFile
用 net/http ServeFile 提供静态文件时,Last-Modified 和 If-Modified-Since 可以由文件修改时间驱动条件响应;ETag 与 Cache-Control 则需要业务方明确设置。本文从一个文件处理器拆开这些响应头的职责边界,并说明路径拼接、304 和缓存失效的常见陷阱。136 收藏 -
Go 解析不带时区的日期时间文本时,time.Parse 会按 UTC 解释,time.ParseInLocation 会按传入 Location 解释。本文用对比代码说明选择方法、Zone 判断和输入边界。132 收藏 -
围绕 Go net/url 的 URL.OmitHost 字段,说明空 authority 的 String 序列化、Path 双斜杠保护、Opaque URL 区别和调用方兼容策略,给出带中文注释的最小示例。131 收藏 -
解释 Go testing.T.Run 的布尔返回值、子测试失败日志与父测试汇总关系,给出保留案例名称和失败上下文的写法,并说明 t.Parallel 场景为什么不能简单依赖立即返回值。129 收藏 -
从运行时值、泛型类型参数和接口类型三个角度比较 reflect.TypeFor 与 TypeOf 空指针技巧,说明 nil interface 陷阱以及该怎样选择更直观的写法。126 收藏 -
math/big.Int.FillBytes 会把整数的绝对值写入调用方提供的字节切片;切片过短时高位会被截断。本文用 BitLen 预估容量,在固定宽度字段写入前拒绝不安全目标,并说明负数、零值和缓冲区复用边界。125 收藏 -
Golang · Go问答 | 2小时前 | HTTP服务 · Go问答 · Go net/http 连接生命周期 StateHijacked StateClosed http.Server.ConnState 会话资源
用 Go 的 http.Server.ConnState 管理连接级会话资源,区分 StateIdle、StateClosed 与 StateHijacked,给出受 mutex 保护、可幂等清理的资源注册表写法,并说明 HTTP/2 与优雅停机边界。123 收藏 -
testing.B.Loop 解决了串行基准的计时和编译器优化陷阱,但并行基准仍要通过 RunParallel 与 PB.Next 分配工作。本文拆开两种语义,说明如何读取 ns/op、b.N、GOMAXPROCS 和 SetParallelism。122 收藏 -
Go 的 crypto/mlkem.Decapsulate 只有在密文长度不正确时返回错误;长度正确但内容无效时会得到不匹配的共享密钥。本文给出错误传播、协议确认和日志脱敏的实用写法。122 收藏 -
Go fuzzing 找到失败输入后,如何把大而难读的样本缩成稳定的回归语料?本文说明最小化参数、失败语料目录、生成语料缓存和修复后的 go test 回归流程。118 收藏