Go教程技术文章
-
Go fs.WalkDir 传给回调的是逻辑路径和目录项,按文件名筛选时应先用 path.Base 取出最后一段,再用 path.Match 做完整匹配,并分别处理模式错误、访问错误和目录剪枝。486 收藏 -
Go 的 os.DirFS 可以把 fs.FS 的相对路径映射到指定目录,但它不是 chroot,也不会阻止目录内符号链接越出根目录。本文用 ReadFile、WalkDir 和 Go 1.24+ 的 os.OpenRoot 区分两种边界。348 收藏 -
encoding/xml 默认按 UTF-8 解析 XML。本文用 CharsetReader 按声明分派 GBK、Windows-1252 和 Shift_JIS 转换器,把输入接成 UTF-8 Reader,并区分未知字符集、转换失败、XML 语法错误和业务校验错误。102 收藏 -
Go FlagSet 可以为每个子命令建立独立参数集合。本文用标准库示例说明如何切分 os.Args、分别调用 Parse、处理错误与位置参数,并总结公共参数的组织边界。110 收藏 -
用 Go 标准库 container/list 和 map 实现一个可运行的 LRU 缓存,说明访问命中、队首移动、更新和队尾淘汰之间的关系,并补充容量与并发边界。401 收藏 -
用 Go 的 container/heap 实现优先级任务队列,讲清 heap.Interface、最小堆方向、任务入队出队、优先级更新和空队列边界。146 收藏 -
用 strings.CutPrefix 安全移除 Go 字符串的可选前缀,区分未命中、空结果和空前缀,并给出兼容旧版本的 HasPrefix 加切片写法。108 收藏 -
Go strings.IndexFunc 接收一个 rune 判断函数,返回第一个满足规则的 Unicode 字符在原字符串中的字节偏移;没有匹配时返回 -1。本文用 Unicode 字符属性和自定义规则说明最小写法、字节边界及未命中处理。393 收藏 -
用 crypto/rand 生成随机字节,再以 RawURLEncoding 得到无等号的 URL 令牌。示例区分随机性、编码格式和业务有效性,并说明严格解析、旧格式迁移与链接使用注意事项。480 收藏 -
Golang · Go教程 | 1星期前 | 并发 · 缓存 · 性能优化 · 正则表达式 · Go教程 · 正则表达式 Go 并发缓存 MustCompile regexp.Compile Regexp缓存
Go 中固定正则应在初始化阶段编译一次,动态正则则按 pattern 缓存 *regexp.Regexp。本文从重复 Compile 的现象出发,说明 MustCompile、并发安全 map、错误返回和高基数 key 的边界。349 收藏 -
用 Go 标准库边读文件边计算 SHA-256 摘要,不把整个文件一次性读入内存;本文给出 os.Open、sha256.New、io.Copy 的完整写法,并补充错误处理、进度统计与算法选择边界。133 收藏 -
通过依赖注入让 Go 令牌生成函数接收 io.Reader:生产环境使用 crypto/rand.Reader,测试环境注入可重复字节流,稳定覆盖长度、编码和错误分支,同时明确测试替换不能进入生产路径。453 收藏 -
Go TLS 主机名校验的关键是把拨号地址与证书名称分开看:使用 tls.Config.ServerName 指定证书校验名和 SNI,保留默认证书链校验,并用 x509.VerifyHostname 理解 DNS、IP、通配符和 Common Name 的边界。235 收藏 -
用 httptest.NewServer 隔离真实上游,搭建带路由和参数约束的临时库存服务。示例覆盖地址与客户端注入、超时、重定向策略、响应断言和资源清理,并区分 Recorder、TLS 与新测试接口。366 收藏 -
Go TLS 客户端要信任自定义 CA,通常应从系统根证书池开始,再用 AppendCertsFromPEM 追加 PEM,最后把证书池放进 tls.Config.RootCAs。本文给出 HTTP 客户端写法,并说明证书链、主机名和 InsecureSkipVerify 的边界。307 收藏