Go语言技术文章
-
regexp.Regexp 默认采用左侧最先匹配的规则,调用 Longest 后会在同一起点优先选择更长结果。本文用路由前缀示例解释两种语义、并发边界与验证方法。255 收藏 -
Go 1.27 让 go doc 支持 package@version 查询,但查不到符号不一定是版本不存在。本文拆解模块解析、包路径、符号名和版本选择的边界,给出一套不运行目标业务代码的排查清单。255 收藏 -
用 Go filepath.WalkDir 递归过滤指定扩展名文件,正确处理目录、符号链接、根路径失败和子目录读取错误,保留部分结果与错误清单。255 收藏 -
Go 客户端访问内网 HTTPS 服务时,如何保留系统根证书并追加自定义 CA,正确配置 x509.CertPool、tls.Config 和 http.Transport。255 收藏 -
Go 1.23 起可用 unique.Make 规范化可比较值。本文用重复标签对象示例说明如何保存 unique.Handle[string]、在热路径比较句柄、在输出边界取回 Value,并解释何时不该使用。255 收藏 -
Go HTTP 请求重试不要一股脑塞进 Transport:网络级可重放失败适合统一处理,创建和写入接口必须由业务层配合幂等键、结果查询与退避策略,才能避免超时后的重复写入。255 收藏 -
用 Go net/http 实现文件上传时,同时处理请求体大小、multipart 内存边界、原始文件名清洗、扩展名校验和服务端存储名。254 收藏 -
Go 读取 PEM 证书时要先用 encoding/pem 解出 DER,再交给 crypto/x509 解析;本文给出读取 DNSNames、IPAddresses、NotAfter 和处理证书链的完整方法。254 收藏 -
Go 的 os.ReadFile 面向普通文件,传入目录时出现错误通常是路径类型不匹配。本文解释 *os.PathError 的含义,并给出目录读取与错误判断的正确写法。254 收藏 -
Go generate 不会自动在 go test 前运行,这是 Go 工具链有意保留的职责边界。本文从 //go:generate 指令、生成文件和测试入口的关系出发,说明如何用显式命令或 CI 脚本稳定编排生成与测试,并排查生成缺失、版本漂移和失败传播问题。254 收藏 -
Go slices.Compact 只压缩连续重复值,并会清理新长度之后的尾部。本文结合源码说明 clear 的内存语义、原地复用边界和安全使用方式。254 收藏 -
讲清 Go database/sql Rows 读取 SQL NULL 的正确方式:用 NullString、NullInt64 或 sql.Null[T] 接住空值,结合 Valid 判断、Rows.Err 和 Close 保留完整数据语义。254 收藏 -
本文用 Number 与 ID 两个示例说明 Go 泛型类型集合约束的设计方法,覆盖 ~、|、comparable、命名类型、map 键和 API 复用边界。254 收藏 -
Go 服务更新本地配置时,直接覆盖正式文件可能让读取方看到半截内容。本文用临时文件、写入校验、Sync 和 Rename 组成原子替换流程,并补上权限、并发读取、失败回滚与验收日志。253 收藏 -
Go 的 io/fs.ReadDir 会按文件名排序返回目录项,但底层 ReadDirFile、os.File.ReadDir 和错误场景的行为并不完全一样。本文从一次目录索引顺序错乱的排查开始,拆清排序、部分结果和测试边界。253 收藏