Go语言技术文章
-
区分 Go HTTP 请求超时与 Transport 空闲连接回收,给出连接池参数、共享 Transport 和主动清理的排查方法。120 收藏 -
讲清 Go bufio.Scanner.Buffer 的初始缓冲区、最大 token 上限与错误处理,并给出 Scanner 和 bufio.Reader 的选型边界。120 收藏 -
通过 P-256 私钥与 P-384 公钥的最小示例,说明 Go crypto/ecdh 为什么拒绝跨曲线计算,并给出调用前检查、协议协商和同曲线修复方法。120 收藏 -
big.Int.FillBytes 会把绝对值写成左侧补零的大端固定长度字节串,并返回原缓冲区;容量不足时会 panic。本文给出最小用法、BitLen 容量检查、零值与负数边界以及复用测试。120 收藏 -
用 Go 的 log/slog 配置 JSONHandler,在请求入口绑定 request_id、method 和 path,并把带字段的 Logger 传入业务层,统一结构化日志输出、分组、脱敏与性能边界。120 收藏 -
Go time.Time 取整时,Truncate 向下归入已开始的时间窗口,Round 选择最近的时间刻度。本文用代码和边界表对比两者结果,并说明 Location、负时间和非正 Duration 的处理方式。119 收藏 -
Go 的 encoding/csv 遇到列数不齐时,把 FieldsPerRecord 设为 -1 允许可变列数,再在业务层校验必需字段;0 和正数分别适合自动固定与强制固定的 CSV。118 收藏 -
Go 自定义 UnmarshalJSON 时把原类型再次交给 json.Unmarshal,会触发方法递归。本文用别名类型切断回调,并给出栈帧、字段错误和半成品对象的排查清单。118 收藏 -
os.WriteFile 会先打开并截断已有文件,写入中途失败可能留下残缺内容。本文解释权限错误的判断方法,并用同目录临时文件加替换保护原文件。118 收藏 -
Go 中直接调用 io.ReadAll 会把 Reader 读到 EOF。面对没有可靠长度的 HTTP 响应,应先做 Content-Length 预检查,再用 LimitReader 多读一个字节识别超限,最后把关闭、错误和解析边界统一处理。118 收藏 -
Go 1.24 引入的 weak.Pointer 可以让缓存只保存弱引用。本文用元数据缓存示例拆解 weak.Make、Value、GC 可达性和并发重建边界,帮助你写出可安全丢弃、失效后可回源的缓存。118 收藏 -
maps.Clone 只对 map 的键和值执行普通赋值,因此新旧 map 的顶层容器独立,但切片、指针、内层 map 等引用型值仍共享底层数据。本文通过示例说明边界,并给出切片、嵌套 map 与指针结构的深拷贝写法。118 收藏 -
go.mod 的 toolchain 只建议使用更高的首选工具链,不会把更新的本机 Go 降级。本文按 go.work、GOTOOLCHAIN、版本名称与下载条件排查未切换原因,并给出可复用的诊断命令。118 收藏 -
讲清 Go os.CreateTemp 的目录与 pattern 规则,演示如何按业务前缀创建临时文件,并用 Close、Remove 和 defer 覆盖异常路径清理。117 收藏 -
Go select 加 default 可以做一次非阻塞检查,但不应把它直接放进无节制的循环。本文用状态返回、阻塞等待、ticker 和 context 取消四种边界,说明 default 的适用范围与常见误区。117 收藏