Go语言技术文章
-
Go os.Root 适合在固定根目录内打开可能来自外部的相对路径。本文用一个小型读取函数说明空字符串为何要单独处理、怎样拒绝越界路径,以及如何用 %w、errors.Is 和 errors.As 保留可判断的错误边界。476 收藏 -
Go http.Request.Clone 会复制 Header,适合在保留原请求的同时为下游请求追加字段;本文对比 Clone、WithContext 和 Body 的复制边界,给出隔离 Header 修改的写法。476 收藏 -
unique.Make 不负责打开文件。本文用 os.DirFS、fs.ValidPath 和 fs.ReadFile 在固定根目录下读取文件,再把文件内容交给 unique.Make 做规范化,并说明符号链接、可比较类型和 Go 版本边界。476 收藏 -
本文以对象移动为例,说明 Go rtreego 为什么不能直接修改 Bounds,并给出 Delete、更新边界、Insert 的维护顺序,以及没有原对象指针时使用 DeleteWithComparator 的方法。476 收藏 -
oggvorbis的Length和Position以采样帧计数,Read返回值则是交错float32元素数量。本文给出多声道单位换算、进度快照示例,以及未知长度、缓冲区和定位的边界处理。476 收藏 -
shopspring/decimal 的 MarshalJSONWithoutQuotes 是包级全局开关,开启后所有 Decimal 的 JSON 输出都会从字符串变成数字。本文说明它的影响范围、并发修改风险,以及如何用字段级 MarshalJSON 控制单个接口。476 收藏 -
Go math/big.Int.Append 可把数字文本追加到字节切片。本文通过记录接口说明返回值接收、缓冲区复用、结果复制及参数错误处理。476 收藏 -
Go 1.23 的 slices.Repeat 可以按次数生成连续切片结果,本文说明正数、零次、空输入、nil 语义、负数和大规模分配边界。476 收藏 -
Go 的 httputil.ReverseProxy.Rewrite 适合把入站请求改造成可控的出站请求。本文从一个小型反向代理开始,讲清 SetURL、Host、X-Forwarded-*、查询参数和 Director 迁移时最容易忽略的边界。476 收藏 -
Go 构建标签适合把平台差异放到文件选择阶段。本文从文件名约束、//go:build 表达式和默认实现讲起,再用 GOOS、GOARCH、CGO_ENABLED 与 -tags 组织可重复的交叉编译。476 收藏 -
Go plugin 通过运行时 Open 和 Lookup 装载独立插件,单可执行文件则在编译期收敛部署物。本文从平台、工具链、符号契约、安全和回滚边界比较两种方案,并给出上线决策清单。476 收藏 -
Go 使用 archive/zip 读取中文文件名异常时,先区分 UTF-8、CP437 和历史本地编码,再用显式解码与路径安全策略处理,避免把乱码或不可信路径直接落盘。476 收藏 -
Go 的 gzip.Writer 可以通过 Reset 复用,但切换输出前必须先 Close 当前 GZIP 流。本文用批处理示例说明 Write、Close、Flush、Reset 的顺序、差异和容易忽略的边界。476 收藏 -
用 Go json.Decoder 配合 Token、More 和 Decode 逐项处理大型 JSON 数组,说明不保存全量切片时的内存边界、数字精度和异常处理取舍。476 收藏 -
Go range 中把循环变量地址放入指针切片,旧语言语义下可能出现地址相同和值被覆盖。本文拆开副本、作用域和 Go 版本差异,并给出指向原元素与独立副本的两种稳定写法。476 收藏