Go教程技术文章
-
用 Go 1.24+ 的 os.OpenInRoot 和 os.Root 将文件打开限制在指定目录内,理解相对路径、符号链接、错误边界与旧代码迁移方式。256 收藏 -
使用 Go log/slog 的 JSONHandler 输出结构化日志,用 request、user 分组区分业务字段,并通过 ReplaceAttr 统一脱敏密码、令牌等敏感值。256 收藏 -
Go slog.LevelVar 适合把日志级别做成可并发更新的运行时开关。本文用一个 HTTP 管理入口演示 LevelVar、Handler 与回滚配置的配合,重点核对动态生效、并发读取和错误配置不污染当前级别。255 收藏 -
用 Go filepath.WalkDir 递归过滤指定扩展名文件,正确处理目录、符号链接、根路径失败和子目录读取错误,保留部分结果与错误清单。255 收藏 -
Go 客户端访问内网 HTTPS 服务时,如何保留系统根证书并追加自定义 CA,正确配置 x509.CertPool、tls.Config 和 http.Transport。255 收藏 -
用 Go net/http 实现文件上传时,同时处理请求体大小、multipart 内存边界、原始文件名清洗、扩展名校验和服务端存储名。254 收藏 -
Go 读取 PEM 证书时要先用 encoding/pem 解出 DER,再交给 crypto/x509 解析;本文给出读取 DNSNames、IPAddresses、NotAfter 和处理证书链的完整方法。254 收藏 -
Go slices.Compact 只压缩连续重复值,并会清理新长度之后的尾部。本文结合源码说明 clear 的内存语义、原地复用边界和安全使用方式。254 收藏 -
讲清 Go fs.WalkDir 遇到权限错误时的回调语义,用 errors.Is 判断权限并返回 fs.SkipDir,保留其他目录继续遍历。253 收藏 -
讲清 Go http.ServeContent 中 modtime 的真实作用:如何配合 Range、If-Range 和 Last-Modified 返回稳定的部分内容响应,并避开 time.Now() 造成的缓存问题。253 收藏 -
用 base64.Encoding.Strict 对比普通解码,验证末尾填充位、CorruptInputError 和 DecodeString 的错误边界,给出可复现的 Go 示例。252 收藏 -
Go regexp 支持命名捕获组,适合解析带可选字段的日志和配置文本。本文用 SubexpNames、SubexpIndex 和 FindStringSubmatch 区分整体不匹配、可选字段缺失与业务默认值。252 收藏 -
Go 嵌入资源读取失败时,不要先手写 ReadFileFS。本文按接口分派、embed.FS 路径、fs.ValidPath、PathError 和自定义实现契约逐层排查。252 收藏 -
Go 1.27 新增标准库 uuid 包。本文用 NewV7、Parse、Compare 和 String 拆开时间排序、格式兼容、非法输入与零值边界,给出可运行的请求标识示例。251 收藏 -
Go 1.23 的 maps.Keys 返回 iter.Seq,遍历顺序仍不保证稳定。本文从 for range 与 maps.Keys 的关系出发,演示如何用 slices.Sorted 得到可复现的键序列,并说明排序成本与兼容边界。251 收藏