Go教程技术文章
-
Go sort.Search 返回的是第一个满足条件的索引,不是目标值。本文用一个有序档位查找小项目,讲清索引读取、精确命中、插入位置与 n 的边界处理。145 收藏 -
用 Go embed.FS 按 v1、v2 目录嵌入静态资源,结合 fs.Sub、FileServer 和资源清单保持 URL 稳定,并处理版本切换、缓存与回滚边界。145 收藏 -
Golang · Go教程 | 4星期前 | WEB开发 · golang · go · net/http · ServeMux · Go 模式匹配 路由冲突 http.ServeMux PathValue
Go 1.22 扩展了 http.ServeMux 的方法、通配符和优先级规则。本文用最小可运行示例排查重叠模式、405 响应和 PathValue 取值,给出注册阶段与请求阶段的验证清单。144 收藏 -
Go 读取 gzip 不只是调用 gzip.NewReader:本文从单个 .gz 文件讲到串联 gzip 成员,说明 io.EOF、ErrChecksum、Multistream(false) 和 Reset 应该怎样配合。144 收藏 -
Go 1.25 的 net/http 新增 CrossOriginProtection,本文从浏览器请求边界、Handler 接入、可信来源配置和 403 验收入手,拆解它适合解决什么问题以及哪些请求不能误放行。143 收藏 -
fs.WalkDir 面向抽象文件系统,filepath.WalkDir 面向本机文件路径;两者共享 DirEntry 回调,却在路径格式、数据来源和测试方式上有关键差异。本文用同一项目录扫描任务拆开选择边界,并给出可验证的代码写法。143 收藏 -
Go 1.26 放开了泛型类型在类型参数列表中的自引用。用 Adder[A] 拆解类型集合、方法集合与实例化边界,分清普通接口实现和泛型方法,最后给出最小编译检查清单。143 收藏 -
crypto/rand.Read 的契约是填满目标切片。本文说明如何处理长度判断、自定义 io.Reader 的短读、io.ReadFull 以及固定长度随机令牌的业务边界。143 收藏 -
Go 的 string 可以携带任意字节,协议入口不能仅凭类型就认为它是合法文本。本文用 unicode/utf8.ValidString 区分完整 UTF-8、截断序列和业务上不允许的内容,并给出拒绝与记录的落地写法。143 收藏 -
Golang · Go教程 | 4星期前 | 标准库 · golang · JSON · 配置管理 · go · 工程实践 · 空值处理 encoding/json Go教程 MarshalText encoding.TextMarshaler 配置序列化
同一个配置值如果在 JSON、日志和环境变量之间各写一套转换,很快就会出现格式漂移。本文用 encoding.TextMarshaler 统一文本表示,拆开 json.Marshal 的调用规则、指针接收者、错误处理和 nil 边界,并给出可运行的验证示例。142 收藏 -
用 Go 的 io/fs.Sub 把嵌入文件系统收窄到一个子目录时,真正容易出错的是目录名和 Open 路径的边界。本文通过 embed.FS 示例拆开 fs.Sub、fs.ValidPath 与 fs.PathError 的关系,并给出可复现的排查方法。142 收藏 -
通过源码调用图与二进制符号表两个证据边界,讲清 govulncheck source、binary 模式的运行方式、结果差异、局限和修复决策。142 收藏 -
围绕 Go maps.DeleteFunc 清理不合格键,解释回调遍历期间的删除语义、判定函数副作用、nil map 行为与并发安全边界,并给出可验证的代码和检查清单。141 收藏 -
用 Go netip.Prefix.Contains 实现路由白名单时,IPv4、IPv4-mapped IPv6 与前缀长度必须先统一判断,本文给出可运行的核验方法。141 收藏 -
Golang · Go教程 | 4星期前 | 标准库 · 性能 · 迭代器 · 字符串处理 · Go教程 · Go Go 1.24 iter.Seq strings.SplitAfterSeq 字符串分段
strings.SplitAfterSeq 从 Go 1.24 开始返回单次使用的 iter.Seq[string],按分隔符产出保留分隔符的字符串片段。本文用一个可运行的小实验说明如何消费它、如何提前停止,以及空分隔符和无匹配时该如何验收。141 收藏