Go教程技术文章
-
Go archive/zip 中 FileHeader.Method 不是任意压缩等级。本文解释 Store、Deflate、ErrAlgorithm、CreateHeader 与 CreateRaw 的边界,并给出写入错误、Close 收尾和读回校验的排查方法。358 收藏 -
围绕 Go io/fs 讲清文件不存在、权限错误、非法路径和目录遍历失败的判断顺序,给出 errors.Is、errors.As、ReadFile 与 WalkDir 的可复用处理方式。358 收藏 -
Go net/url 拼接路径时如何避免双斜杠?本文说明 URL.JoinPath、PathEscape、ResolveReference 的边界,并给出 Go 1.19+ 与旧版本的安全处理方案。358 收藏 -
用 Go unsafe.Slice 把数组建立为共享存储的切片视图,说明空数组、长度边界、对象存活和 uintptr 暂存的风险,以及生产发布前的检查清单。358 收藏 -
Go archive/zip 处理上传压缩包时,不要用 io.ReadAll 一次性读取解压内容。本文用 File.Open、UncompressedSize64、io.CopyN 和额外字节探测,说明如何逐项读取、限制单文件大小,并补上路径与归档总量边界。358 收藏 -
用 strings.Builder 拼接大量片段时,按字节数估算 Grow 容量,按输入类型选择 WriteString、Write、WriteByte 或 WriteRune,并避开 []byte 到 string 的多余转换与非零 Builder 复制。355 收藏 -
Golang · Go教程 | 3天前 | 命令行工具 · Go教程 · flag.NewFlagSet ContinueOnError Go flag.FlagSet Go 子命令 Go 命令行参数解析
用 Go flag.FlagSet 为 serve、export 等子命令隔离参数、帮助和错误输出,掌握 ContinueOnError、SetOutput、Args 与位置参数的组织边界。355 收藏 -
FindAllStringSubmatchIndex 返回的是整段匹配和每个捕获组的字节边界,未参与匹配的组用 -1 标记。本文用 Go 示例拆开索引数组的排列方式,并给出安全切片与 UTF-8 文本处理方法。354 收藏 -
Go regexp 通过命名捕获组提取日志字段,配合 SubexpIndex 集中处理索引、匹配失败、可选字段和重复命名,让日志格式调整不再牵动大量 match 数字位置。354 收藏 -
runtime.KeepAlive 的作用不是阻止 GC,而是把对象的可达性延长到指定调用点。本文用外部资源句柄的最小例子说明终结器为什么可能过早运行、KeepAlive 应该放在哪里,以及如何用资源关闭状态验证调用顺序。353 收藏 -
讲清 Go atomic.Uint64 的 Add 与 Load 如何完成并发计数和单值统计快照,并说明多字段状态不能靠连续 Load 自动保持一致。353 收藏 -
围绕Go net/url处理带未编码分号的查询串,说明ParseQuery如何保留有效参数和错误信息,为什么URL.Query会静默丢错,以及旧协议兼容分号时的安全拆分边界。353 收藏 -
Go 的 log/slog 会先通过 Logger.Enabled 和 Handler.Enabled 判断日志级别,再决定是否构造记录并交给 Handler.Handle。本文用可运行示例拆开这条调用链,说明昂贵属性计算该放在哪里,以及如何用测试确认过滤边界。352 收藏 -
Go 默认会按操作系统的解析规则查找域名。需要固定 DNS 服务器时,可以给 net.Resolver 配置 Dial 回调,再把它接入 net.Dialer.Resolver,让 LookupHost 或 HTTP 客户端使用同一套解析策略。351 收藏 -
Go net/http 重定向会复制普通请求头,但 Authorization、Cookie 等敏感头有安全边界。本文用 CheckRedirect、主机白名单和 Cookie Jar 说明如何保留必要 Header。351 收藏