Go语言技术文章
-
Go 请求超时后仍看到底层连接,通常不是 context.WithTimeout 失效,而是请求上下文、Transport、连接池和服务端属于不同生命周期。本文给出完整的取消链路、Transport 排查方法和连接状态判断清单。445 收藏 -
使用 Go groot 打开 ROOT 文件后,遍历 File.Keys() 列出对象键,并读取名称、类名、标题和 cycle。本文还说明对象键与对象内容的区别、Get 的使用边界,以及嵌套目录和异常文件的处理方式。445 收藏 -
Go SMTP 返回 535 时,不要只看错误码猜原因。本文用 net/smtp 的 Auth、Mail、Rcpt 阶段区分账号认证失败与信封发件人被策略拒绝,并给出保留 SMTP Code 和 Msg 的排障写法。445 收藏 -
Go 连续读取多个 PEM 块时,第二段找不到往往不是证书不存在,而是没有继续消费 pem.Decode 返回的 rest,或忽略了 PEM 必须从行首开始、在行尾结束的格式要求。445 收藏 -
Go 类型分析工具拿到 *types.Selection 后,可以用 types.SelectionString 统一生成字段或方法选择字符串,并通过 Qualifier 控制接收者类型中的包名显示。本文给出从 types.Info.Selections 取值、编写包名限定函数和处理嵌入字段的完整写法。445 收藏 -
Go AST 删除或替换节点后,原来的注释不会因为切片变化自动重新归属。本文用 ast.CommentMap 说明 NewCommentMap、Filter 和 Update 的配合方式,避免源码重写时注释残留或漂移。445 收藏 -
Go接口如何限制请求体字节数?通过MaxBytesReader改造读取边界,区分413与400,说明JSON尾部、上传与回归用例的处理。444 收藏 -
Go 的 io/fs 使用统一的虚拟路径语法。本文说明 fs.ValidPath 如何拒绝空段、点段和首尾斜杠,怎样在 FS.Open 前接入校验,以及反斜杠、文件存在性和目录隔离的边界。444 收藏 -
Go map 在 range 期间新增键可能被访问,也可能不会被访问。本文区分单协程修改与并发读写,给出键快照和显式待处理队列两种稳定方案。444 收藏 -
Go build 与 go vet 结果不同不一定是工具链异常。本文通过一个格式参数错误的小模块,区分编译、vet 和测试职责,给出修复代码及本地与 CI 的环境对齐方法。444 收藏 -
Go 1.23 起可以直接用 os.CopyFS 把 fs.FS 的目录树复制到磁盘。本文从 os.DirFS 和 fs.Sub 的根路径开始,给出嵌入文件与本地目录示例,并排查已存在文件、路径和权限错误。444 收藏 -
Go regexp 默认采用 leftmost-first 规则,同一起点有多个候选时不一定选择最长结果。本文用 Regexp.Longest 说明 leftmost-longest 的差异、调用时机、并发边界,并比较它与 CompilePOSIX 的适用场景。444 收藏 -
用 Go Pond 的 NewGroup、SubmitErr 和 Wait 统一等待一批并发任务并收集错误,同时说明首个错误后的取消边界与 StopAndWait 收尾方式。444 收藏 -
Go genetlink的Command属于内层通用消息头,Netlink外层Type负责选择协议族。结合离线封装示例,说明familyID、版本、请求标志及控制消息的区别。444 收藏 -
atomic.Value 虽然接收 any,但同一个 Value 的 Store、Swap 和 CompareAndSwap 必须保持一致的具体类型。本文解释首个 Store 的类型锁定、nil 规则、常见 panic 以及统一快照结构的改法。444 收藏