Go语言技术文章
-
Go 程序直接使用 net.LookupIP 的第一个结果时,IPv4/IPv6 顺序变化可能造成连接变慢或失败。本文区分解析结果、RFC 6724 地址排序和 Dialer Fast Fallback,给出双栈排查、限族连接与安全回归写法。203 收藏 -
Golang · Go问答 | 5天前 | golang · Context · 并发编程 · 超时控制 WithTimeout WithCancel Go context 取消传播 WithoutCancel
本文从停止权、时间预算和父级脱离三个维度比较 WithCancel、WithTimeout 与 WithoutCancel,解释父子取消传播、CancelFunc 回收、nil Done 风险,并给出请求后短任务的有界组合写法。202 收藏 -
Go 1.27 支持具体类型声明带自身类型参数的方法,但接口方法仍不能声明类型参数,泛型方法的某次实例化也不会进入类型的方法集。本文给出普通接口方法、泛型函数和适配器三种组合方式。201 收藏 -
本文用 go.work 连接本地 API 与服务模块,避免 replace 污染 go.mod,并通过 GOWORK=off 测试和分阶段升级保持两个模块独立发布。201 收藏 -
Golang · Go问答 | 3天前 | 故障排查 · net/http · Go问答 · 反向代理 Sec-Fetch-Site Go CrossOriginProtection Origin Host 403误判
定位 Go CrossOriginProtection 在反向代理改写 Host、请求缺少 Sec-Fetch-Site 时的 403 误判,给出精确可信 Origin、Host 保留与安全测试方案。201 收藏 -
本文给出 go.work 默认不入库、紧耦合单仓例外可入库的判断矩阵,并说明 go.work.sum、GOWORK=off、CI 双通道与变更权限如何约定。200 收藏 -
Go 1.24 引入的 os.Root 可以把文件读写限制在上传目录内。本文对比 filepath.Join、os.OpenRoot 与 os.OpenInRoot 的使用边界,并说明符号链接、平台差异、性能和资源释放。200 收藏 -
用一个实现 io.Reader 的限速包装器接入 io.Copy,让文件或请求体的复制链路按字节速率发送,文章同时说明读取粒度、突发流量、错误处理和并发复用边界。200 收藏 -
用 Go 1.23 的 iter.Seq2 为树形索引提供键值遍历时,可让 All 返回中序序列,并让递归 walker 把 yield=false 一路向上返回,从而支持 range break、保持封装且避免构造临时切片。199 收藏 -
Go 的 ResponseController.EnableFullDuplex 允许 HTTP/1 Handler 在请求体尚未结束时交错读取与写响应,但它并不 Hijack 底层连接。本文给出逐块读取、逐块确认的完整写法,并说明包装器、截止时间、HTTP/2 与代理缓冲边界。199 收藏 -
Go 的 URL 查询参数同时存在原始字符串和解码后的值。本文用 net/url 拆开 RawQuery、Query 与 ParseQuery 的差异,处理重复键、加号、分号和异常百分号,并给出适合签名、缓存、审计和业务筛选的选择方式。198 收藏 -
Go 类型断言返回 ok=true 只说明接口的动态类型匹配,断言出的指针仍可能为 nil。本文给出双重判断、反射边界、源头修复和回归测试写法。197 收藏 -
go fix 负责源码现代化修复,gofmt 负责标准格式化。本文从执行顺序、分析器依赖和构建配置三个角度解释连续运行产生不同 diff 的原因,并给出可重复的审阅流程。196 收藏 -
Go 1.22 起可以用 reflect.TypeFor[T]() 直接取得泛型参数的 reflect.Type。本文从 TypeOf 的旧写法切入,说明接口、指针、切片和结构体元数据的读取方式,并给出泛型元数据缓存与静态类型边界的实用写法。196 收藏 -
Go 测试的偶发失败不能只靠重复运行排查。本文区分测试数据种子与 go test 的 -shuffle 种子,给出局部 rand.Rand、顺序记录、CI 复现命令和诊断清单,并说明 map 迭代、并发调度与外部状态为何不能靠一个种子完全复现。195 收藏