Go语言技术文章
-
Go debug/pe.File.ImportedSymbols 可以列出 PE 文件在动态加载时需要由其他库满足的导入符号。本文用 pe.Open、ImportedSymbols 和 defer Close 组织一个可复用的读取示例,并解释 symbol:dll 返回格式、空结果、序号导入和解析错误的边界。437 收藏 -
go work sync 主要把工作区构建列表同步回 use 指向模块的 go.mod,并可能更新 go.work.sum;本文区分三个文件职责,说明提交前如何判断依赖变化。437 收藏 -
Go 正则解析日志时,不要把 FindStringSubmatch 的数字下标散落在结构体初始化里。使用命名捕获组配合 SubexpIndex 建立字段映射,匹配失败返回错误,可选字段缺失保留零值,正则调整后更容易维护。436 收藏 -
Go 关闭带缓冲 channel 后,已经写入缓冲区的元素仍会按顺序读完。本文用代码说明 close、ok、range 与零值判断的边界。436 收藏 -
Go 测试中的 testexit 不是常规公开参数。本文比较 os.Exit、runtime.Goexit、t.FailNow、t.SkipNow、TestMain 和 -timeout 的退出范围,帮助你把失败、跳过、进程退出与资源清理分开处理。436 收藏 -
围绕 Go time.Ticker 的停止语义,演示如何用 context 退出周期循环、等待工作协程,并按所有权释放外部资源,同时说明 Go 1.23 垃圾回收变化的边界。436 收藏 -
Go 1.21 及以上的新代码通常优先用 slices.SortStableFunc;旧版本兼容或强依赖索引比较器时可保留 sort.SliceStable。本文对照两种比较器契约、迁移风险与稳定性断言。436 收藏 -
使用 Go 的 xml.Decoder 流式读取 XML 时,先用 Token 找到目标 StartElement,再用 DecodeElement 把当前节点和嵌套内容解码到结构体,并正确处理 EOF、错误和循环边界。436 收藏 -
Go 的 encoding/json 没有给某个字段单独绑定 Reader 的接口。本文用自定义 UnmarshalJSON 检查字段字节数,再在 HTTP 入口限制整个请求体,说明字段超限、请求体超限、语法错误和类型错误的处理边界。436 收藏 -
Go 1.27 将标准库 Unicode 数据升级到 17.0.0。本文用 unicode.Version、分类表和 UTF-8 校验搭出兼容处理方案,并说明旧工具链、字体与终端显示之间的边界。436 收藏 -
围绕 Go net/http 的 Response.Body.Close、EOF、Transport 连接池和 HTTP/1.x 复用边界,整理响应体未完全读取时的排查与处理方案。436 收藏 -
Go HTTP/1 服务端默认可能先消耗未读请求体再写响应,ResponseController.EnableFullDuplex 可让 handler 按需交替读取请求体与写出响应。本文说明调用位置、ErrNotSupported 处理、Flush 的职责,以及 HTTP/2 和代理缓冲的边界。436 收藏 -
Go 1.27 及更高版本中,go mod tidy 会整理多个 require 块。本文区分块布局、间接标记和模块版本变化,说明如何用 -diff 判断是否只是格式整理。436 收藏 -
Go work sync 没有更新某个模块的 go.sum,通常不是命令失效,而是它同步的是 workspace build list 到各模块的 go.mod;workspace 独有的校验记录由 go.work.sum 保存。本文按文件职责和命令边界说明如何判断结果。436 收藏 -
解释 Go 循环中的 defer 为什么不会在每轮迭代结束时执行,并给出局部函数封装资源释放的实用写法。436 收藏